编程之家 jb51.cc Discuz!自动获取标签实现方法,首先看代码以gbk为例:
以下为引用的内容: <?PHP //强制使用字符集 @header('Content-Type: text/html; charset=gbk'); $subjectenc = $_GET['subjectenc']; $messageenc = preg_replace("/[.+?]/U",'',$_GET['messageenc']); //关键部分,这里是将你网站的文章标题和内容发送到dz的标签库中去匹配,返回的是一个xml文档 $data = @implode('',file("http://keyword.discuz.com/related_kw.html?title=$subjectenc&content=$messageenc&ics=gbk&ocs=gbk"));//把标题和内容发送到dz官方去找 if($data) {//有数据返回 $parser = xml_parser_create();//建立一个 XML 解析器 xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0); xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); xml_parse_into_struct($parser,$data,$values,$index);//将 XML 数据解析到数组中 xml_parser_free($parser); $kws = array(); foreach($values as $valuearray) {//循环单曲xml中的数据到数组$kws if($valuearray['tag'] == 'kw' || $valuearray['tag'] == 'ekw') { $kws[] = siconv(trim($valuearray['value']),‘gbk’,'utf-8');//编码转换 } } $return = ''; if($kws) { foreach($kws as $kw) { $return .= $kw.' ';//把获取到的标签用空格链接 } $return = trim($return); } echo $return;//返回匹配到的标签 } else { echo ' ';//没有匹配的标签 } ?> |
以下为引用的内容: <?PHP //强制使用字符集 @header('Content-Type: text/html; charset=gbk'); $subjectenc ='用“超级站长”安装Discuz!和UCHome,超级简单!'; //这是标题 $messageenc = preg_replace("/[.+?]/U",'用“超级站长”安装Discuz!和UCHome,超级简单!'); //这是内容 //从内容中找标题中有TAG; $data = @implode('',file("http://keyword.discuz.com/related_kw.html?title=$subjectenc&content=$messageenc&ics=gbk&ocs=gbk"));//把标题和内容发送到dz官方去找 if($data) { $parser = xml_parser_create();//建立一个 XML 解析器 xml_parser_set_option($parser,$index);//将 XML 数据解析到数组中 xml_parser_free($parser); $kws = array(); foreach($values as $valuearray) { if(in_array($valuearray['tag'],array('kw','ekw'))) { //kw和ekw是 DZ返回回来的XML中的一个元素名 $kws[] = iconv('utf-8','gbk',$valuearray['value']);//编码转换 } } } //最后出来的是数组. print_r($kws); ?> |