本篇文章为大家展示了如何在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] +来检验的,+号表示不止一个
匹配符。结果与预期相同,那么,是否在脚本中就可以使用这个正则了呢?
我们测试一下,我们使用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中利用正则表达式对中文进行提取,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。