• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php 一元分词算法_php技巧

php 搞代码 3年前 (2022-01-26) 12次浏览 已收录 0个评论
<br><br>/** <BR>* 一元分词算法 <BR>* UTF8编码下一个字符如果首字符ASCII码不大于192则只占1个字节 <BR>* 如果首字符ASCII码大于192小于224则占用2个字节,否则占用3个字节 <BR>* 一元分词需要在mysql的my.ini文件中增加 ft_min_word_len=1 <BR>* 可以使用mysql查询语句 show variables like '%ft%' 查看mysql全文搜索相关设置 <BR>* <BR>* @access global <BR>* @param string $str <BR>* @param boolean $unique 是否去除重复值 <BR>* @param boolean $merge 是否合并附加值 <BR>* @return array <BR>*/ <BR>function seg_word($str,$unique=false,$merge=true) <BR>{ <BR>$str = trim(strip_tags($str)); <BR>$strlen = strlen($str); <BR>if($strlen == 0) return array(); <BR>$spc = ' '; <BR>//按需增加需要过滤的字符 <BR>$search = array(',', '/', '\\', '.', ';', ':', '\'', '!', '~','"', '`', '^', '(', ')', '?', '-', "\t", "\n", '\'', '', "\r", "\r\n", '\$', '&', '%', '#', '@', '+', '=', '{', '}', '[', ']', ')', '(', '.', '。', ',', '!', ';', '“', '”', '‘', ''', '[', ']', '、', '—', ' ', '《', '》', '-', '…', '【', '】',':'); <BR>$numpairs = array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八','9'=>'九','0'=>'零'); <BR>$str = alab_num($str); <BR>$str = str_replace($search,' ',$str); <BR>$ord = $i = $k = 0; <BR>$prechar = 0;// 0-空白 1-英文和符号 2-中文 <BR>$result = array(); <BR>$annex = array(); <br><br>while($ord = ord($str[$i])) <BR>{ <BR>//1字节字符 <BR>if ($ord <= 0xC0 ) <BR>{ <BR>//去除空字符串 <BR>if($ord < 33) { <BR>$prechar=0; <BR>$i++; <BR>$k++; <BR>continue; <BR>} <BR>//附加中文大写数字转换 <BR>if(isset($numpairs[$str[$i]])) { <BR>$annex[]=$numpairs[$str[$i]]; <BR>} <BR>//如果前面是中文 <BR>if( $prechar == 2 ){ <BR>$result[++$k] = $str[$i]; <BR>} <BR>else { <BR>$result[$k] .= $str[$i]; <BR><strong style="color:transparent">本文来源gao@daima#com搞(%代@#码@网&</strong><strong>搞gaodaima代码</strong>} <BR>$prechar = 1; <BR>$i++; <BR>} <BR>else //2-3字节字符(中文) <BR>{ <BR>if($ord < 0xE0) <BR>$step = 2; <BR>else <BR>$step = 3; <BR>$c = substr($str,$i,$step); <BR>if(false !== $key = array_search($c,$numpairs)){ <BR>$annex[] = $key; <BR>} <BR>if ($prechar != 0) { <BR>$result[++$k] = $c; <BR>} <BR>else { <BR>$result[$k] .= $c; <BR>} <br><br>$prechar = 2; <BR>$i+=$step; <BR>} <BR>} <BR>$result = $merge ? array_merge($result,$annex) : $result ; <BR>return $unique ? array_unique($result) : $result ; <BR>} <BR>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php 一元分词算法_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址