解决Discuz X2.5/X3中SEO标题空格丢失问题

Discuz X2.5/X3版本中,如果你在“后台->全局->SEO设置”的任意标题中添加类似“ - ”含有空格的字符,Discuz会自动略掉导致该空格丢失,经过研究,得出以下解决方法:

打开/source/class/helper/helper_seo.php,在49行附近找到如下代码:

1
2
3
4
5
public static function strreplace_strip_split($searchs, $replaces, $str) {
    $searchspace = array('((\s*\-\s*)+)', '((\s*\,\s*)+)', '((\s*\|\s*)+)', '((\s*\t\s*)+)', '((\s*_\s*)+)');
    $replacespace = array('-', ',', '|', ' ', '_');
    return trim(preg_replace($searchspace, $replacespace, str_replace($searchs, $replaces, $str)), ' ,-|_');
}

将以上代码用/* */注释并在后面添加:

1
2
3
4
5
public static function strreplace_strip_split($searchs, $replaces, $str) {
    $searchspace = array('(((\s)*\-(\s)*)+)', '(((\s)*\,(\s)*)+)', '(((\s)*\|(\s)*)+)', '(((\s)*\t(\s)*)+)', '(((\s)*_(\s)*)+)');
    $replacespace = array('$3-$3', '$3,$3', '$3|$3', '$3 $3', '$3_$3');
    return trim(preg_replace($searchspace, $replacespace, str_replace($searchs, $replaces, $str)), ' ,-|_');
}

重新修改SEO Title设置并刷新缓存,即可解决此问题。