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

发布时间:2025-12-11 02:26:05 浏览次数:1

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

php preg_replace空格无法替换问题

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

<?php$str='<p>你好<p>';$str=preg_replace('/\s/is','',$c);$str=str_replace("","a",$str);var_dump($str);//不起作用

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

<?php$str='<p>你好<p>';$str=str_replace(chr(194).chr(160),"a",$str);//解决方法1$str=preg_replace('/\xC2\xA0/is',"a",$str);//解决方法2var_dump($str);//ok

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

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

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

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

看完了这篇文章,相信你对“php中preg_replace替换失败的解决方法”有了一定的了解,如果想了解更多相关知识,欢迎关注本站行业资讯频道,感谢各位的阅读!

preg_replace
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477