如何在PHP中利用正则表达式对中文进行提取

  介绍

本篇文章为大家展示了如何在PHP中利用正则表达式对中文进行提取,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1。GBK (GB2312/GB18030)

代码如下:

\ x00 - \ xff  GBK双字节编码范围,,,   \ x20的——\ x7f  ASCII ,,   \ xa1 - \ xff 中文,gb2312 ,,   \ x80 - \ xff 中文,gbk

,
2。utf - 8 (Unicode)

\ u4e00 - \ u9fa5 (中文),,,   \ x3130 - \ x318F (韩文,,,   \ xAC00 - \ xD7A3 (韩文),,,   \ u0800 - \ u4e00 (日文)

在notepad++下面,我们可以首先进行测试我们的正则书写的错误与否。第一个表达式我是使用[\ u4e00 - \ u9fa5] +来检验的,+号表示不止一个

如何在PHP中利用正则表达式对中文进行提取

匹配符。结果与预期相同,那么,是否在脚本中就可以使用这个正则了呢?

我们测试一下,我们使用preg_match_all ('/[\ u4e00 - \ u9fa5] + & # 39;,主题,美元$ matches)调用,然后你却看到了这么一个结果:编译失败:PCRE不支持\ L \ L \ N}{名称,\ U,或在抵消\ U 2 ....是不是很头大? ?这究竟是什么原因?

查阅了很多资料后发现,U (PCRE_UTF8),就是上面的PCRE,这是是一个Perl库,包括Perl兼容的正规表达式库。此修正符启用了一个PCRE中与Perl不兼容的额外功能。模式字符串被当成utf - 8。本修正符在Unix下自PHP 4.1.0起可用,在win32下自PHP 4.2.3起可用。而PHP正则表达式对于十六进制数据的表达方式上也有所不同,在PHP中,是用\ x表示十六进制数据的。下面我们就将代码优化一下,检测函数变为:

,class  storeDataAdapter  extends 商店{,,   ,,,,,,,private  dsData美元;,,,   ,,,,,,,/* *,,   ,,,,,,,,*,数据转换函数,调用preg_match_all根据美元模式正则来进行数值匹配,并将返回的结果以数组形式存储在$匹配中,,,   ,,,,,,,,*,$ matches[0]将包含与整个模式匹配的文本,$ matches[1],将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推,,   ,,,,,,,,*,@see 商店:data_convert (),,   ,,,,,,,,*/,,   ,,,,,,,public  function  data_convert(模式,主题美元),{,,   ,,,,,,,,,,,$ matches=array ();,,,   ,,,,,,,,,,,if  (preg_match_all(模式,美元,美元,$ matches)) {,,   ,,,,,,,,,,,,,,,return  $ matches [0];,,,   ,,,,,,,,,,,}else ,,,   ,,,,,,,,,,,{,,   ,,,,,,,,,,,,,,,return 零,,,,   ,,,,,,,,,,,},,,   ,,,,,,,},,,   ,,,}

调用的时候变为:

,美元商店=new  storeDataAdapter ($ txtContent);,,,   ,,,$匹配=数组();,,,   ,,,dsName=商店和美元;gt; data_convert ('/[\ x7f - \ xff] + & # 39;, txtContent美元);,,,   ,,,foreach  (dsName 美元;as  val美元){,,   ,,,,,,,echo 美元val干净,lt; br& gt;“,,,,   ,,,}

,

输入文件为:

如何在PHP中利用正则表达式对中文进行提取

、下面是提取出中文之后的输出文件内容:

如何在PHP中利用正则表达式对中文进行提取

,符合预期需求。

上述内容就是如何在PHP中利用正则表达式对中文进行提取,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

如何在PHP中利用正则表达式对中文进行提取