php中preg_replace替换失败的解决方法

  介绍

小编给大家分享一下php中preg_replace替换失败的解决方法,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

php preg_replace替换失败的解决办法:首先打开相应的php代码文件,然后将替换不了的字符,打印出ASCII码来替换掉即可。

<强> php preg_replace空格无法替换问题

一次坑爹的小bug。读取一段文字(编码utf - 8),想替换掉空格,(“大小写不敏感“. .),preg_replace (“\ s/? .)都不起作用。

,php & lt; ?   ,   ,str 美元;=,& # 39;& lt; p>,,,,你好& lt; p> & # 39;;   ,str 美元;=,preg_replace (& # 39;/\ s/如果# 39;,& # 39;& # 39;,$ c);   ,str 美元;=,str_replace (,,,,,“a",, str美元),,   ,var_dump (str);//不起作用

没办法,将替换不了的空格奥德()下才看的到,这个utf - 8空格比较特殊.ASCII 194 + 160出来的。

,php & lt; ?   ,   ,str 美元;=,& # 39;& lt; p>,,,,你好& lt; p> & # 39;;   ,str 美元;=,str_replace(科(194),只装备(160),“a",, str美元);,,//,解决方法1   ,str 美元;=,preg_replace (& # 39;/\ xC2 \ xA0/如果# 39;,,“a",, str美元);,,//,解决方法2   ,var_dump (str);//好

问题的根源,在于utf - 8这种编码里面,存在一个特殊的字符,其编码是“0 xc2 0 xa0”(194 160),转换成字符的时候,表现为一个空格,跟一般的半角空格(ASCII 0 x20)一样,唯一的不同是它的宽度不会被压缩,因此比较多的被用于网页排版(如首行缩进之类)。而其他的编码方式如GB2312, Unicode之类并没有这样的字符。

整理遇到的各种无法替换的字符:

科(194).chr(160),变现为空格   科(227).chr(128),变现为空格   科(226).chr (128) .chr (172) .chr (226) .chr (128) .chr (172) .chr(30),变现为空

总结:替换不了的字符,打印出ASCII码来总能替换掉吧。

php中preg_replace替换失败的解决方法