PHP / CSS在字符串中查找单词,更改其颜色以供显示。有问题,找不到解决方案,有什么建议吗?感谢。
<pre>
<?php
$str="Try to realize the truth... there is no spoon."; // spoon can be anywhere in string
$array = explode(" ", $str);
for($i=0;$i < count($array);$i++)
{
if ($array[$i] == "spoon") {
?><span style="color:red;"><?php echo echo $array[$i]." "; ?></span>
<?php
} else {
echo $array[$i]." ";
}
} ?>
</pre
答案 0 :(得分:5)
我个人会用:
function highlight($text='', $word='')
{
if(strlen($text) > 0 && strlen($word) > 0)
{
return (str_ireplace($word, "<span class='hilight'>{$word}</span>", $text));
}
return ($text);
}
$str="Try to realize the truth... there is no spoon."; // spoon can be anywhere in string
$str= highlight($str, 'spoon');
注意: str_ireplace是不区分大小写的版本str_replace。
另外......显然你需要在某处为'hilight'定义css!
答案 1 :(得分:4)
您正在寻找preg_replace()
。
preg_replace('/\b(spoon)\b/i', '<span style="color:red;">$1</span>', $str);
来自DaveRandom的说明:
\b
是一个单词边界断言,以确保您不匹配茶匙或勺子,()
是一个在替换中使用的捕获组,因此套管保持不变。
i
可确保不区分大小写,$1
会将匹配的字放回替换字符串中。
答案 2 :(得分:2)
你的代码不起作用的原因是因为当你在“”(空格)上爆炸时,你希望得到一个带有“勺子”字样的数组,但实际上它是“勺子”这个词。 (注意句点)被添加到数组中以及为什么条件语句if ($array[$i] == "spoon")
永远不会触发。
注意:强> 虽然我同意大多数人并且相信他应该使用像str_replace或preg_replace这样的替代方案,但我认为必须要考虑从“划痕”中解决这个问题。
答案 3 :(得分:2)
你找不到“勺子”,因为你爆炸了一个空间,所以你只会得到“勺子”。
您可以在一行中执行此操作:
str_replace("spoon", "<span style=\"color:red;\">spoon</span>", $str);
希望这有帮助。