PHP Implode将内容包裹在标签中

33

一直在尝试谷歌答案,但似乎找不到任何东西,我有以下问题...

<?php
    $values =   array_map('trim', get_post_custom_values($key));
    $value  =   implode($values,', ');
    echo "<div class='top-meta-vals'>".apply_filters(" $value\n", $value)."</div>";
?>

我想将每个$value标签包装起来,但我不确定该怎么做...

我尝试了以下方法:

<?php
$value = "<span>".implode($values,', ')."</span>";
?>

到现在为止,我没有运气,有人能给我一个想法吗?


4
$value = '<span>'.implode('<span>, </span>', $values).'</span>'; 将 $values 数组中的元素用 "<span>,</span>" 连接起来,再在开头和结尾加上 "<span>" 标签。 - PeeHaa
2
上面的注释是错误的。应该在implode中使用'</span>, <span>'。 - DarkSide
3个回答

74

通过这种方式,您将整个集合包装在一个span中,您需要向implode添加闭合/开放标签:

$value = "<span>".implode('</span>,<span>', $values)."</span>";

2
只是提一下:如果 $tags 数组为空,它将变成 <span></span> 字符串。 - Bartosz Grzybowski
1
将 implode 函数的参数反转,就可以得到正确的结果,应该是:implode('</span>,<span>', $values)。 - h00ligan
1
为了解决空的 $values 问题,导致 $value 成为空的 span 元素,你可以使用 echo trim( $value, '<span></span>'); - Will B.
1
今天遇到了同样的问题。添加了额外的 empty() 子句:empty($values) ? "" : "<span>".implode('</span>,<span>', $values)."</span>"; - avall

21

你可以使用array_map函数,例如:

$filter = function($tag){ return '<span>' . $tag . '</span>'; };
$spannedTags = array_map($filter, $tags);

最后,只需使用, implode即可。


8
基本上,这只是使用 span 开/闭的 “胶水” 来压缩您的值,并将其包装起来,以便于第一个和最后一个项目有其开始/结束 span 标记:
$value = "<span>" . implode("</span><span>", $values) . "</span>";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接