crx349 发表于 2015-2-6 11:07:21

利用Discuz分词接口制作的文章分词函数

代码:
/**
* DZ在线中文分词
* @param $title string 进行分词的标题
* @param $content string 进行分词的内容
* @param $encode string API返回的数据编码
* @return返回的关键词
*/
function dz_segment($title = '', $content = '', $encode = 'utf-8'){
    if($title == ''){//标题不能为空
      return false;
    }
    $title = rawurlencode(strip_tags($title));//标题去除HTML、XML 以及 PHP 的标签;转成url格式
    $content = strip_tags($content);//去除内容当中的HTML、XML 以及 PHP 的标签。
    if(strlen($content)>2400){ //在线分词服务有长度限制
      $content =mb_substr($content, 0, 800, $encode);//获取字符串的部分
    }
    $content = rawurlencode($content);//转换url格式
    $url = 'http://keyword.discuz.com/related_kw.html?title='.$title.'&content='.$content.'&ics='.$encode.'&ocs='.$encode;
    $xml_array=simplexml_load_file($url);//将XML中的数据,读取到数组对象中
    $result = $xml_array->keyword->result;//获取xml对象当中的关键词结果
    $data = '';//我需要的是字符串,所以直接就为空吧,数组可以定义为array();
    foreach ($result->item as $key => $value) {
            $data .= (string)$value->kw." ";//我需要的是关键词之间用空格分割,其他可以array_push($data, (string)$value->kw);
    }
    if($data){
      return $data;
    }else{
      return false;
    }
}
函数需要传入$title,$content,$encode,$encode是默认编码utf-8,用的时候直接调用函数就行了


例子:
http://keyword.discuz.com/related_kw.html?title='.$title.'&content='.$content.'&ics='.$encode.'&ocs='.$encode;


页: [1]
查看完整版本: 利用Discuz分词接口制作的文章分词函数