forum_relatekw.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: forum_relatekw.php 29236 2012-03-30 05:34:47Z chenmengshu $
  7. */
  8. if(!defined('IN_DISCUZ')) {
  9. exit('Access Denied');
  10. }
  11. if($tid = @intval($_GET['tid'])) {
  12. $data = C::t('forum_post')->fetch_threadpost_by_tid_invisible($tid);
  13. $subject = $data['subject'];
  14. $message = cutstr($data['message'], 500, '');
  15. $pid = $data['pid'];
  16. } else {
  17. $subject = $_GET['subjectenc'];
  18. $message = $_GET['messageenc'];
  19. }
  20. $subjectenc = rawurlencode(strip_tags($subject));
  21. $messageenc = rawurlencode(strip_tags(preg_replace("/\[.+?\]/U", '', $message)));
  22. $data = @implode('', file("http://keyword.discuz.com/related_kw.html?ics=".CHARSET."&ocs=".CHARSET."&title=$subjectenc&content=$messageenc"));
  23. if($data) {
  24. if(PHP_VERSION > '5' && CHARSET != 'utf-8') {
  25. require_once libfile('class/chinese');
  26. $chs = new Chinese('utf-8', CHARSET);
  27. }
  28. $parser = xml_parser_create();
  29. xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
  30. xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
  31. xml_parse_into_struct($parser, $data, $values, $index);
  32. xml_parser_free($parser);
  33. $kws = array();
  34. foreach($values as $valuearray) {
  35. if($valuearray['tag'] == 'kw' || $valuearray['tag'] == 'ekw') {
  36. $kws[] = !empty($chs) ? $chs->convert(trim($valuearray['value'])) : trim($valuearray['value']);
  37. }
  38. }
  39. $return = '';
  40. if($kws) {
  41. foreach($kws as $kw) {
  42. $kw = dhtmlspecialchars($kw);
  43. $return .= $kw.',';
  44. }
  45. $return = dhtmlspecialchars($return);
  46. }
  47. $return = substr($return, 0, strlen($return)-1);
  48. if(!$tid) {
  49. $_G['inajax'] = 1;
  50. include template('forum/relatekw');
  51. } elseif($kws) {
  52. loadcache('censor');
  53. C::t('forum_post')->update('tid:'.$_G['tid'], $pid, array(
  54. 'tags' => implode(',', $kws),
  55. ));
  56. }
  57. }
  58. ?>