出于某种原因,preg_replace
在字符串中看到¬
并将其替换为¬
:
$url= "http://something?blah=2&you=3&rate=22¬hing=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¬hing=1 // Expected result
为什么会发生这种情况以及如何预防?
答案 0 :(得分:2)
&
具有特殊含义。您的URI包含¬
,它本身就是一个有效的HTML实体。它被转换为¬
,因此造成了麻烦。将它们正确地转义为&not
以避免此问题。如果您的数据是从其他地方获取的,则可以使用htmlspecialchars()
自动执行此操作。
答案 1 :(得分:1)
使用此&
;代替&
因为您的&no
具有特殊含义
使用此网址:
http://something?blah=2&you=3&rate=22&nothing=1
然后相应地替换