output.inc.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. function editor($field, $value) {
  2. $setting = string2array($this->fields[$field]['setting']);
  3. if($setting['enablekeylink']) {
  4. $data = $this->_keylinks($value, $setting['replacenum'],$setting['link_mode']);
  5. }
  6. return $data;
  7. }
  8. function _base64_encode($t,$str) {
  9. return $t."\"".base64_encode($str)."\"";
  10. }
  11. function _base64_decode($t,$str) {
  12. return $t."\"".base64_decode($str)."\"";
  13. }
  14. function _keylinks($txt, $replacenum = '',$link_mode = 1) {
  15. $txt = addslashes($txt);
  16. $search = "/(alt\s*=\s*|title\s*=\s*)[\"|\'](.+?)[\"|\']/ise";
  17. $replace = "$this->_base64_encode('\\1','\\2')";
  18. $replace1 = "$this->_base64_decode('\\1','\\2')";
  19. $txt = preg_replace($search, $replace, $txt);
  20. $keywords = $this->data['keywords'];
  21. if($keywords) $keywords = strpos(',',$keywords) === false ? explode(' ',$keywords) : explode(',',$keywords);
  22. if($link_mode && !empty($keywords)) {
  23. foreach($keywords as $keyword) {
  24. $linkdatas[] = $keyword;
  25. }
  26. } else {
  27. //TODO
  28. $linkdatas = array(
  29. 0 => array(0=>'网站',1=>'http://www.phpip.com'),
  30. 1 => array(0=>'百度',1=>'http://www.baidu.com'),
  31. );
  32. }
  33. if($linkdatas) {
  34. $word = $replacement = array();
  35. foreach($linkdatas as $v) {
  36. if($link_mode && $keywords) {
  37. $word1[] = '/'.preg_quote($v, '/').'/';
  38. $word2[] = $v;
  39. $replacement[] = '<a href="javascript:;" onclick="show_ajax(this)" class="keylink">'.$v.'</a>';
  40. } else {
  41. $word1[] = '/'.preg_quote($v[0], '/').'/';
  42. $word2[] = $v[0];
  43. $replacement[] = '<a href="'.$v[1].'" target="_blank" class="keylink">'.$v[0].'</a>';
  44. }
  45. }
  46. if($replacenum != '') {
  47. $txt = preg_replace($word1, $replacement, $txt, $replacenum);
  48. } else {
  49. $txt = str_replace($word2, $replacement, $txt);
  50. }
  51. }
  52. $txt = preg_replace($search, $replace1, $txt);
  53. $txt = stripslashes($txt);
  54. return $txt;
  55. }