php 提取中文后简单分词

文章1:汉字一二3四5六七八,九十六七...***********************文本文件txt的内容:六七八六七汉字...*******************... 文章1:
汉字一二3四5六七八,九十六七...
***********************
文本文件txt的内容:
六七八
六七
汉字
...
***********************
第一步:正则提取文章1中2个以上的汉字结果
汉字一二/六七八/九十六七...
第二步:分词结果并去重复
汉字/字一/一二/六七/七八/九十/十六...
第三步:第二步结果把每对汉字分开后判断文件中是否包含
是的话就用“\”分开,得到
汉字\六七\七八
展开
 我来答
飲鴆_止渴
2013-12-09 · TA获得超过1232个赞
知道小有建树答主
回答量:400
采纳率:0%
帮助的人:542万
展开全部
$str = "汉字一二3四5六七八,九十六七...";

$s1 = array();//初始化储存第二步结果的数组

//preg_match_all("/[x80-xff]+/", $str, $match);//此为GBK使用

preg_match_all("/[\x{4e00}-\x{9fa5}]{2,}+/u", $str, $match);//此为UTF-8使用

foreach($match[0] as $str1)//循环遍历匹配到的汉字

{

 $leng = iconv_strlen($str1, "UTF-8");//计算汉字其长度

 for($i = 0; $i < $leng-1; $i++)

 {

  $temp = mb_substr($str1, $i, 2, "UTF-8");//将汉字切割长两个字,得第一步结果

  if(!in_array($temp, $s1))//去除重复,得第二步结果

   $s1[] = $temp;//得到的汉字存入数组

 }

}

//print_r($s1);//第一二步完成,得数组$s1,可打印查看结果

$s2 = file_get_contents("21.txt");//将文件内所有字符读取成一个字符串

$s2 = iconv("", "UTF-8", $s2);//将字符串转码,否则难免有乱码

//echo $s2;//可输出查看文件中的内容

$s = "";//初始化最终结果的变量

foreach($s1 as $j)//遍历汉字对

{

 if(preg_match("/".$j."/", $s2))//判断该汉字对是否被包含于文件的文字中

  $s .= ("" == $s) ? $j : "\\".$j;//将结果合在$s中

}

echo $s;//得结果,可输出查看或调用

若有疑问,可追问。

注释详细,希望能加分

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式