【问题标题】:Loop through a string and wrap each word in a div - PHP遍历一个字符串并将每个单词包装在一个 div 中 - PHP
【发布时间】:2017-06-08 14:03:38
【问题描述】:

我正在为我的网络排名器获取网站“关键字”。它返回我需要的结果,但我想将每个关键字包装到一个跨度标签中。

这就是我获取关键字的方式:

$websiteTags = get_meta_tags('http://www.'.$website.'/');

dd($websiteTags);

这给了我这个:

他们我只是打电话给$websiteTags['keywords']; 来得到这个结果:

我需要将该字符串中的每个单词包装在一个跨度标记中,这样它在前端看起来会更好,因为现在它只是输出那个长字符串。

我的问题是,我将如何遍历该字符串并将每个关键字包装在一个 span 标签中。

我尝试过执行 foreach 循环 str_replace() 并在网上查找,但找不到我需要的解决方案。

【问题讨论】:

  • 真的是字符串而不是数组吗?
  • 如果您尝试过“我尝试过执行 foreach 循环,str_replace()”,出了什么问题?你遇到了什么样的错误? 为什么它不是您需要的解决方案?我的方法是类似的;遍历单词,检查它们是否在 keywords 数组中,替换等。
  • 我的意思是,它在一个数组中,但我很确定它是一个字符串,对吧?
  • $result = explode(",",$websiteTags['keywords']) 循环结果

标签: php arrays laravel


【解决方案1】:

你可以这样做,你只是想将每个单词包装成<span></span>

'<span>'.str_replace(', ', '</span><span>', $string).'</span>'

http://php.net/manual/en/function.str-replace.php

【讨论】:

  • 我试过这个,但它返回的实际上是 在每个关键字周围的文本中,而不是 HTML 代码。
  • @David 它是 HTML,只需使用 {!! $string !!}} 而不是 {{ $string }} 作为此字符串。 laravel.com/docs/5.4/blade#displaying-data
  • 是的,我忘记了,我也会在答案中提到你。
【解决方案2】:
new_list = ['<span style="....">"%s"</span>' % x 
            for x in $websiteTags['keywords'];)

注意。 $websiteTags['keywords'] 是您问题中定义的一些字符串

【讨论】:

    【解决方案3】:

    @Bas 回答对我来说效果最好。我复制了他的:

     $keyword = explode(",",$websiteTags['keywords']);
    

    然后在前端,我只是这样做了:

    @foreach($keyword as $key => $w)
            <span class="label label-success">{{ $w }}</span>
    @endforeach
    

    另外,Alexey Mezenin 的回答也可以。

    在后台:

    $keyword = '<span class="label label-success">'.str_replace(', ', '</span><span class="label label-success">', $websiteTags['keywords']).'</span>';
    

    前端:{!! $keyword !!}

    【讨论】:

      【解决方案4】:

      不确定它是否有效,但您可以尝试将数据放入数据库并查询数据并使用 while 循环来回显跨度

      【讨论】:

      • 如果您不确定,请对问题发表评论。而且您的答案将不起作用,因为在 DB 中仍然是一个字符串。
      • 我的错。新堆叠。当我阅读它时,我想到了什么。但这不是重点吗?标签只是字符串值的关键字
      猜你喜欢
      • 2021-06-30
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多