首页 >

正则表达式 – 为什么在正则不加模式修正符的时候,PHP去匹配的中文字符会是乱码的

后端开发|php教程正则表达式 - 为什么在正则不加模式修正符的时候,PHP去匹配的中文字符会是乱码的
正则表达式,php,字符编码
后端开发-php教程
段子网源码,vscode 切换vue,ubuntu sscap,配置tomcat 80,sqlite存文件路径,可以发红包的营销插件,前端采用什么框架和库,我的世界红色爬虫,render() php,嘉兴短视频seo,手机版视频网站源码下载,网页模板源文件,h5横向滑动模板lzw

情况如下:
双轨直销系统源码下载,vscode开发苹果app,ubuntu安装微信,重启tomcat脚本,sqlite3 不存在,网页设计好就业吗,易企cms 调用数据库,数据库服务器价格,js 软键盘插件,开源的前端样式框架,python爬虫怎么用,php 获取域名,武汉seo服务,springboot相册,网页设计中标签
的作用.,手机网站兼容性,java网页实时聊天,asp新闻发布网站模板,html5 css3 后台管理模板,制作一个登陆页面代码,cms管理系统是什么,晴天视频分享程序破解lzw
php 5.5.11
mac osx 10.9.2、win7、centOS 6.3
寻模板整站源码,ubuntu如何换中文,c爬虫 js函数,怎么php,开封seo品牌lzw
代码如下:

echo preg_replace('/[\s-]+/', '-', '阿树')."\n";

测试结果如下:

Mac 乱码
windows、linux都正常

增加模式修正符后正常,如下:

echo preg_replace('/[\s-]+/u', '-', '阿树')."\n";

查找资料,是这么说的:

请问:

u的意思就是将匹配的字符当作utf8吗,还有其他作用吗
我的代码是utf8,但是为什么只有mac(Unix)会乱码呢?

回复内容:


情况如下:

php 5.5.11
mac osx 10.9.2、win7、centOS 6.3

代码如下:

echo preg_replace('/[\s-]+/', '-', '阿树')."\n";

测试结果如下:

Mac 乱码
windows、linux都正常

增加模式修正符后正常,如下:

echo preg_replace('/[\s-]+/u', '-', '阿树')."\n";

查找资料,是这么说的:

请问:

u的意思就是将匹配的字符当作utf8吗,还有其他作用吗
我的代码是utf8,但是为什么只有mac(Unix)会乱码呢?

树的utf8表示是e6 a0 91。敏感的话看到这里就应该明白了。

第二个字节a0\n是一样的,从而被替换成了-,剩下左右两边的两个字节变成非法ASCII,显示成问号了,至于平台差异性,估计是所谓PCRE的问题吧,有兴趣可以钻进去查查


正则表达式 - 为什么在正则不加模式修正符的时候,PHP去匹配的中文字符会是乱码的
  • 如何使用Javascript正则表达式来格式化XML内容【javascript】
  • 如何使用Javascript正则表达式来格式化XML内容【javascript】 | 如何使用Javascript正则表达式来格式化XML内容【javascript】 ...

    正则表达式 - 为什么在正则不加模式修正符的时候,PHP去匹配的中文字符会是乱码的
  • 第4章 数据处理-php正则表达式-郑阿奇(续)【PHP】
  • 第4章 数据处理-php正则表达式-郑阿奇(续)【PHP】 | 第4章 数据处理-php正则表达式-郑阿奇(续)【PHP】 ...

    正则表达式 - 为什么在正则不加模式修正符的时候,PHP去匹配的中文字符会是乱码的
  • PHPCMS发布页面的栏目选择问题
  • PHPCMS发布页面的栏目选择问题 | PHPCMS发布页面的栏目选择问题 ...