帝国cms在生成页面时将文字内容转换为unicode(utf8)编码的方法

教程分享 ching 1个月前 (10-26) 21次浏览 0个评论

我们在生成内容时,有时需要将页面的编码转换为 Unicode 内码格式,也就是中文文字都变为《技术有限公司》这种样式,但帝国 cms并没有提供这种功能。

实际这种格式为 NCR 格式,也就是 Numeric character reference.

转换为这种编码格式,并不影响浏览器的正常解析,仍然可以转换为正确的文字,也并不影响搜索引擎收录(相反的,经过我们收集各方的经验,发现这种方式对收录也有部分帮助,特别是可以越过 360 安全浏览器的软件对于页面上不和谐的关键词的检测。但 CMS 大学小编尚未查证,姑且相信吧)

我们这里只讨论方法,由于 php 也没有提供类似的内置函数来直接输出,所以我们写了一段函数来处理这个问题,代码如下:

折叠 PHP 代码
function nochaoscode($str, $encode = “utf-8”)
{
if (!function_exists(“iconv”) || !function_exists(“mb_strlen”)) {
return $str;
}

$str = iconv($encode, “utf-16”, $str);
for ($i = 0; $i < mb_strlen($str); $i+=2) { $code = ord($str{$i}) * 256 + ord($str{$i + 1}); if ($code < 128) { $output .= chr($code); } else if ($code != 65279) { $output .= "&#" . $code . ";"; } } return $output; } 将上面的函数放在 /e/class/functions.php 文件最上方,作为第一个函数。因为我们是要修改帝国的文件生成部分,来实现生成文件时自动将文字输出位这种编码格式。接下来我们修改生成函数,这里涉及到内容页、栏目页、首页、自定义页面等等部分。 首先我们搜索 折叠 XML/HTML 代码 //内容页替换公共标记 将 折叠 PHP 代码 $temp=str_replace('[!--pagetitle--]','‘,$temp);
修改为:

折叠 PHP 代码
$temp=str_replace(‘[!–pagetitle–]’,’‘,$temp);
然后我们搜索

折叠 PHP 代码
$indextext=RepBq($indextext);
修改为:

折叠 PHP 代码
$indextext=nochaoscode(RepBq($indextext));

ps:还有更多部分,这里我们不再一一叙述,总之,将该文件中涉及到文件生成的函数再输出内容时都用我们前边写的函数转换一下,写入文件后就大功告成了。这里我们直接附上附件供大家参考(适用于帝国 cms7.2 UTF8 版本,其他版本请参照前文的思路自行修改)。

修改后的文件生成效果:

帝国 cms在生成页面时将文字内容转换为 unicode(utf8)编码的方法.jpg


喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址