手机
当前位置:查字典教程网 >编程开发 >php教程 >php 一元分词算法
php 一元分词算法
摘要:复制代码代码如下:/***一元分词算法*UTF8编码下一个字符如果首字符ASCII码不大于192则只占1个字节*如果首字符ASCII码大于1...

复制代码 代码如下:

/**

* 一元分词算法

* UTF8编码下一个字符如果首字符ASCII码不大于192则只占1个字节

* 如果首字符ASCII码大于192小于224则占用2个字节,否则占用3个字节

* 一元分词需要在mysql的my.ini文件中增加 ft_min_word_len=1

* 可以使用mysql查询语句 show variables like '%ft%' 查看mysql全文搜索相关设置

*

* @access global

* @param string $str

* @param boolean $unique 是否去除重复值

* @param boolean $merge 是否合并附加值

* @return array

*/

function seg_word($str,$unique=false,$merge=true)

{

$str = trim(strip_tags($str));

$strlen = strlen($str);

if($strlen == 0) return array();

$spc = ' ';

//按需增加需要过滤的字符

$search = array(',', '/', '', '.', ';', ':', ''', '!', '~','"', '`', '^', '(', ')', '?', '-', "t", "n", ''', '<', '>', "r", "rn", '$', '&', '%', '#', '@', '+', '=', '{', '}', '[', ']', ')', '(', '.', '。', ',', '!', ';', '“', '”', '‘', ''', '[', ']', '、', '—', '', '《', '》', '-', '…', '【', '】',':');

$numpairs = array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八','9'=>'九','0'=>'零');

$str = alab_num($str);

$str = str_replace($search,' ',$str);

$ord = $i = $k = 0;

$prechar = 0;// 0-空白 1-英文和符号 2-中文

$result = array();

$annex = array();

while($ord = ord($str[$i]))

{

//1字节字符

if ($ord <= 0xC0 )

{

//去除空字符串

if($ord < 33) {

$prechar=0;

$i++;

$k++;

continue;

}

//附加中文大写数字转换

if(isset($numpairs[$str[$i]])) {

$annex[]=$numpairs[$str[$i]];

}

//如果前面是中文

if( $prechar == 2 ){

$result[++$k] = $str[$i];

}

else {

$result[$k] .= $str[$i];

}

$prechar = 1;

$i++;

}

else //2-3字节字符(中文)

{

if($ord < 0xE0)

$step = 2;

else

$step = 3;

$c = substr($str,$i,$step);

if(false !== $key = array_search($c,$numpairs)){

$annex[] = $key;

}

if ($prechar != 0) {

$result[++$k] = $c;

}

else {

$result[$k] .= $c;

}

$prechar = 2;

$i+=$step;

}

}

$result = $merge ? array_merge($result,$annex) : $result ;

return $unique ? array_unique($result) : $result ;

}

【php 一元分词算法】相关文章:

php实现求相对时间函数

php一个解析字符串排列数组的方法

谈谈PHP语法(3)

php中检查email完整性

php常见的页面跳转方法汇总

php限制ip地址范围的方法

phpBB BBcode处理的漏洞

php分页函数

php格式化电话号码的方法

php生成年月日下载列表的方法

精品推荐
分类导航