output.inc.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. function editor($field, $value) {
  2. $setting = string2array($this->fields[$field]['setting']);
  3. if($setting['enablekeylink']) {
  4. $value = $this->_keylinks($value, $setting['replacenum'],$setting['link_mode']);
  5. }
  6. return $value;
  7. }
  8. function _base64_encode($matches) {
  9. return $matches[1]."\"".base64_encode($matches[2])."\"";
  10. }
  11. function _base64_decode($matches) {
  12. return $matches[1]."\"".base64_decode($matches[2])."\"";
  13. }
  14. function _keylinks($txt, $replacenum = '',$link_mode = 1) {
  15. $search = "/(alt\s*=\s*|title\s*=\s*)[\"|\'](.+?)[\"|\']/is";
  16. $txt = preg_replace_callback($search, array($this, '_base64_encode'), $txt);
  17. $keywords = $this->data['keywords'];
  18. if($keywords) $keywords = strpos(',',$keywords) === false ? explode(' ',$keywords) : explode(',',$keywords);
  19. if($link_mode && !empty($keywords)) {
  20. foreach($keywords as $keyword) {
  21. $linkdatas[] = $keyword;
  22. }
  23. } else {
  24. $linkdatas = getcache('keylink','commons');
  25. }
  26. if($linkdatas) {
  27. $word = $replacement = array();
  28. foreach($linkdatas as $v) {
  29. if($link_mode && $keywords) {
  30. $word1[] = '/(?!(<a.*?))' . preg_quote($v, '/') . '(?!.*<\/a>)/s';
  31. $word2[] = $v;
  32. $replacement[] = '<a href="javascript:;" onclick="show_ajax(this)" class="keylink">'.$v.'</a>';
  33. } else {
  34. $word1[] = '/(?!(<a.*?))' . preg_quote($v[0], '/') . '(?!.*<\/a>)/s';
  35. $word2[] = $v[0];
  36. $replacement[] = '<a href="'.$v[1].'" target="_blank" class="keylink">'.$v[0].'</a>';
  37. }
  38. }
  39. if($replacenum != '') {
  40. $txt = preg_replace($word1, $replacement, $txt, $replacenum);
  41. } else {
  42. $txt = str_replace($word2, $replacement, $txt);
  43. }
  44. }
  45. $txt = preg_replace_callback($search, array($this, '_base64_decode'), $txt);
  46. return $txt;
  47. }