網(LieHuo.Net)教程 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, 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) { if(in_array($valuearray['tag'],array('kw','ekw'))) { //kw和ekw是 DZ返回回來的XML中的一個元素名 $kws[] = iconv('utf-8','gbk',$valuearray['value']);//編碼轉換 } } } //最后出來的是數組. print_r($kws); ?> |