替换未存储的单词

时间:2013-11-15 11:37:57

标签: php replace preg-replace str-replace substr

我想替换关键字,这是我的算法

$replace="<span class=fb_term >".$term."</span>";
        $insmessage = str_ireplace($term, $replace, $post,$count)

$ count变量返回一个。 但$ insmessage没有替换它中的单词。如果我将"hello"存储在$replace中,那么它工作正常,似乎HTML "<span class=fb_term >"导致问题,在这方面有任何帮助 感谢

2 个答案:

答案 0 :(得分:2)

我真的,真的希望我在这里错了。

假设您的输入字符串只是$post = $term;。好又简单。

你说“如果我将"hello"存储在$replace中,那就可以了。”这表明您尝试了以下方法:

$term = "derp";
$post = $term;
$replace = "hello";
$insmessage = str_ireplace($term,$replace,$post,$count);
echo $insmessage; // outputs hello

现在,我希望自己错了,但请耐心等待。看到上面的工作,你试了一下。

$term = "derp";
$post = $term;
$replace = "<span class=fb_term >".$term."</span>";
$insmessge = str_ireplace($term,$replace,$post,$count);
echo $insmessage; // outputs derp... or does it?

在浏览器中,您的HTML将被解析。 <span>没有特殊行为,如果您没有为.fb_term提供任何CSS,则没有明显的跨度存在迹象。

您尝试echo $count;并看到1.这意味着更换DID。

试试这件事:

echo "Original length: ".strlen($post)."<br />\n";
echo "New length: ".strlen($insmessage);

如果我是对的,您应该看到原始长度为4,新长度为32

拜托,请让我错了......

答案 1 :(得分:0)

我只是用更多数据扩展了你的脚本。被替换的文字被涂成红色,以便于查看。

$post       = "Some text. And HaLLO to all. Another HaLLO";
$term       = "hallo";
$replace    = "<span class='fb_term' style='color:red'>".$term."</span>";
$insmessage = str_ireplace($term, $replace, $post, $count);

echo $insmessage;
echo "<br />count ".$count;

在我的情况下,$ term被替换,红色并显示为2.可以为$ replace文本添加颜色,以查看是否真的发生了1的计数。