Php preg_更换更换&;不是字符串中的有趣字符
由于某种原因,当Php preg_更换更换&;不是字符串中的有趣字符,php,preg-replace,html-entities,Php,Preg Replace,Html Entities,由于某种原因,当preg\u replace看到字符串中的&而不是,并将其替换为,: $url= "http://something?blah=2&you=3&rate=22¬hing=1"; echo preg_replace("/&rate=[0-9]*/", "", $url) . "<br/>"; 您知道为什么会发生这种情况以及如何防止吗?&在使用URI时具有特殊意义。您的URI包含&而不是,它本身就是一个有效的HTML实体。它正在转
preg\u replace
看到字符串中的&而不是,并将其替换为,
:
$url= "http://something?blah=2&you=3&rate=22¬hing=1";
echo preg_replace("/&rate=[0-9]*/", "", $url) . "<br/>";
您知道为什么会发生这种情况以及如何防止吗?&
在使用URI时具有特殊意义。您的URI包含&而不是,它本身就是一个有效的HTML实体。它正在转换为,
,因此导致了故障。如所示,正确地将其转义&;不
,以避免此问题。如果您的数据是从其他地方获取的,您可以使用自动执行此操作。使用此&
;代替此&
因为你的&否
有特殊的意义
使用此url:
http://something?blah=2&you=3&rate=22&nothing=1
然后相应地进行替换工作正常:可能重复的双引号与HTML实体无关。@kapa:更新了答案。echo preg_replace(“/&;rate=[0-9]*/”,“”,htmlspecialchars($url4))。“
”;顺便问一下,第一个“&”字符呢。。?它的显示方式是这样的..为什么..?@Elavarasan:因为出现的&
和后面的字符没有特殊意义。问题是我所依赖的数据来自其他地方,因此我无法指定&,而不是&ohh,这听起来很遗憾,那么最好使用正则表达式将这些&
转换为&代码>第一:P
http://something?blah=2&you=3&rate=22&nothing=1