以下为本篇文章全部内容:
在一些项目里面我们会用到分词,虽然php有自带的分割函数,但是使用过的朋友都知道对中文的支持是很差的,在处理字符串分割成数组的时候我们有很多种方法,我下面就给大家几种方法的例子,希望能帮到各位有需要的朋友。每一种方法我都会附上结果给大家看看是否符合自己需要的需求。
第一种方法:支持中英文混合,并且支持标点符号分割
<?php // +---------------------------------------------------------------------- // | Sphynx php将字符串分割成数组实现中文分词 // +---------------------------------------------------------------------- // | Copyright (c) 2006-2014 http://www.sunnyos.com All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: Sphynx <admin@sunnyos.com> QQ327388905 // +---------------------------------------------------------------------- /* *+---------------------------------------------------------------------- * php将字符串分割成数组实现中文分词 * String $string 需要拆分的字符串 * String $code 字符串的编码 * return Array 分割之后的数组 *+---------------------------------------------------------------------- */ function math($string,$code ='UTF-8'){ if ($code == 'UTF-8') { $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; } else { $pa = "/[\x01-\x7f]|[\xa1-\xff][\xa1-\xff]/"; } preg_match_all($pa, $string, $t_string); $math=""; foreach($t_string[0] as $k=>$s){ $math[]=$s; } return $math; } $str = "sunny个人技术博客欢迎您,这里只提供原创博文,杜绝复制粘贴的垃圾博文。"; echo "<pre>"; print_r(math($str));
以上代码效果:
第二种方法:效果和第一种方法一样
<?php //直接使用正则的方式,不过编码问题的话没有第一种实用 $str = "sunny个人技术博客欢迎您,这里只提供原创博文,杜绝复制粘贴的垃圾博文。"; preg_match_all("/./u", $str, $arr); print_r($arr);
以上代码效果:
第三种方法:此方法过滤了英文和标点符号,也就是说仅分割中文汉字
<?php //直接使用正则的方式,不过编码问题的话没有第一种实用 $str = "sunny个人技术博客欢迎您,这里只提供原创博文,杜绝复制粘贴的垃圾博文。"; preg_match_all('/[\x{4e00}-\x{9fa5}]/u',$str,$arr); print_r($arr);
以上代码效果:
如果大家有什么疑问可以加我QQ327388905进行解答,也可以加入交流群
当然啦,上面的只是几个少数方法,还会有更多的方法支持的,或者谁知道的可以加我qq交流一下。
扫二维码快速加群:
总赞数量:18274
总踩数量:128087
文章数量:29