preg_replace将字符串中的¬替换为有趣的字符

时间:2014-04-09 10:05:36

标签: php preg-replace html-entities

出于某种原因,preg_replace在字符串中看到&not并将其替换为¬

$url= "http://something?blah=2&you=3&rate=22&nothing=1";

echo preg_replace("/&rate=[0-9]*/", "", $url) . "<br/>";

但输出如下:

http://something?blah=2&you=3¬hing=1      // Current result
http://something?blah=2&you=3&nothing=1   // Expected result

为什么会发生这种情况以及如何预防?

2 个答案:

答案 0 :(得分:2)

使用URI时,

&具有特殊含义。您的URI包含&not,它本身就是一个有效的HTML实体。它被转换为¬,因此造成了麻烦。将它们正确地转义为&amp;not以避免此问题。如果您的数据是从其他地方获取的,则可以使用htmlspecialchars()自动执行此操作。

答案 1 :(得分:1)

使用此&amp;代替&

因为您的&no具有特殊含义

使用此网址:

http://something?blah=2&amp;you=3&amp;rate=22&amp;nothing=1

然后相应地替换