nciaer 发表于 2020-5-11 16:52:49

Discuz中showmessage函数关于冒号的一个坑

showmessage在discuz里作为提示信息应用及其广泛。不过最近我发现一个问题,比如我想显示信息如下:

showmessage('请访问<a href = "http://www.baidu.com">www.baidu.com</a>');


提示信息里显示一个超链接嘛,但是显示的竟然是这样的:

分析了,showmessage函数的源码,发现有这样的代码:
$vars = explode(':', $message);
if(count($vars) == 2) {
        $show_message = lang('plugin/'.$vars, $vars, $values);
} else {
        $show_message = lang('message', $message, $values);
}

从以上代码可以看出来,dz用冒号对显示的字符串进行了分隔,如果返回的结果数据有2个元素(其实就是传入的参数里有1个冒号),那么就从插件语言包里获取数据,否则就用默认传入的,所以如果我们想要内容显示正确,传入的字符串不能有1个冒号,要么0个,要么超过1个,于是,代码改成这样:
showmessage('请访问<a href = "http://www.baidu.com">http://www.baidu.com</a>');

然后显示就正常了。

页: [1]
查看完整版本: Discuz中showmessage函数关于冒号的一个坑