php5.4及以上版本会有此问题
解决办法:
1. 找到 uc_client/lib/uccode.class.php 文件
2.将 $message = htmlspecialchars($message); 替换为 $message = dhtmlspecialchars($message);
关于dhtmlspecialchars 是 discuz自定义的将字符转化为Html实体的函数,对php版本做了兼容
- function dhtmlspecialchars($string, $flags = null) {
- if(is_array($string)) {
- foreach($string as $key => $val) {
- $string[$key] = dhtmlspecialchars($val, $flags);
- }
- } else {
- if($flags === null) {
- $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);
- if(strpos($string, '&#') !== false) {
- //过滤掉类似志的16进制的html字符
- $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', $string);
- }
- } else {
- if(PHP_VERSION < '5.4.0') {
- $string = htmlspecialchars($string, $flags);
- } else {
- if(strtolower(CHARSET) == 'utf-8') {
- $charset = 'UTF-8';
- } else {
- $charset = 'ISO-8859-1';
- }
- $string = htmlspecialchars($string, $flags, $charset);
- }
- }
- }
- return $string;
- }
复制代码
|