无法在字符串中正确突出显示单词

时间:2015-10-22 07:40:08

标签: php preg-replace

我试图突出显示字符串中的一些特定单词。

例如:

$keyword='span';

$string='<span>Set color of the string inside span.</span>';

并使用以下功能:

$str = preg_replace("/($keyword)/i","<span style='color:orange;'>$0</span>",$string);

现在,问题是,它突出显示字符串中span标记和span的'span'关键字,但是我想在字符串内部仅突出显示“span”而不是span标记本身,但是不知道怎么做。

我想在不使用strip_tags 的情况下完成所有

3 个答案:

答案 0 :(得分:2)

希望这会有所帮助

<?php

$keyword='span';

$str='<span>Set color of the string inside span.</span>';

echo preg_replace("/(?<!<|\/)$keyword/i",'<span style="color:red;">$0</span>',$str);

答案 1 :(得分:0)

我认为问题在于你要解析HTML代码。我建议删除HTML标签,然后解析纯文本,然后将其插入最终的html代码。

$keyword='span';
$string='<span>Set color of the string inside span.</span>';
$string_notags = strip_tags($string); //remove html tags
echo "<span>".preg_replace("/(".$keyword.")/iu", "<span style=\"color:red\">$1</span>", $string_notags)."</span>"; 

答案 2 :(得分:0)

根据您的代码情况,我有两个解决方案。希望这两种解决方案都能为您服务

  1. $str = preg_replace("/^\s($keyword)[^>]/i","<span style='color:orange;'>$0</span>",$string);
  2. $str = preg_replace("/[^<]($keyword)[^>]/i","<span style='color:orange;'>$0</span>",$string);