DiscuzX 3.4 调试 界面 编辑器设置 Discuz!代码 无法替换

悼霍金逝世!20180314


DiscuzX 3.4 调试 界面 编辑器设置 Discuz!代码;


在给DiscuzX 编辑器添加自定义按钮,无法替换项,原因是正则表达式替换问题:


找到 function_discuzcode.php 文件,在其 discuzcode 方法 210 行代码:

if($parsetype != 1 && $allowbbcode < 0 && isset($_G['cache']['bbcodes'][-$allowbbcode])) {

$message = preg_replace($_G['cache']['bbcodes'][-$allowbbcode]['searcharray'], $_G['cache']['bbcodes'][-$allowbbcode]['replacearray'], $message);

}

这段代码就是做替换动作,其替换正则如下:

array(4) {

  [0]=>

  string(27) "/\[qq]([^"\[]+?)\[\/qq\]/is"

  [1]=>

  string(39) "/\[test]([^"\[]+?)\[\/test\]/is"

  [2]=>

  string(45) "/\[openStart]([^"\[]+?)\[\/openStart\]/is"

  [3]=>

  string(47) "/\[openEnd]([^"\[]+?)\[\/openEnd\]/is"


其中 ([^"\[]+?) 是替换正则,由于我的名称比较复杂 有空格,有[]中括号,导致无法替换,所以Discuz!代码无效,


简单办法:直接把[]内容去掉,即可