And*_*n83 1 php regex string html-entities
我有一个字符串一样"Welcome to McDonalds®: I'm loving it™"......我想摆脱":","'",®和™符号.到目前为止,我已尝试过以下内容:
$string = "Welcome to McDonalds®: I'm loving it™";
$string = preg_replace('/[^a-zA-Z0-9 -]/', '', $string);
Run Code Online (Sandbox Code Playgroud)
但在我收到的输出上:
"Welcome to McDonaldsreg Im loving ittrade"......所以preg_replace在某种程度上转变®到'reg'和™到'trade',这是不适合我,我不明白,为什么这种转换发生在所有.
如何摆脱这种转换?
解决:感谢您的想法,伙计们.我解决了这个问题:
$string = preg_replace(
array('/[^a-zA-Z0-9 -]/', '/&[^\s]*;/'),
'',
preg_replace(
array('/&[^\s]*;/'),
'',
htmlentities($string)
)
);
Run Code Online (Sandbox Code Playgroud)
您可能在实体形式中拥有特殊字符,即®实际上®在您的字符串中.所以更换操作没有看到它.
要解决此问题,您可以过滤&SOMETHING; 子串,并删除它们.可能有内置的方法来执行此操作,可能是html_entity_decode.