缙哥哥的博客
与你分享我的点点滴滴生活

WordPress编辑器切换自动转义实体符号

相信不少使用WordPress撰文的站长是直接使用HTML编辑器的,清枫就是如此,因为可视化格式的东西太多,有时候无法忍受,总之,各有利弊。缙哥哥在使用HTML编辑器编辑时遇到的最大的问题就是高亮代码里的<>总是会因为没有转义而使得文章排版错乱,今天在网上浏览各种教程的时候看到了自动转义的方法,遂分享给大家。

转换至实体的符号:<、>、&

支持的标签:<pre><code>

用到的函数:htmlspecialchars()此函数把一些预定义的字符转换为 HTML 实体。

将以下代码扔到functions.php,记得把6、7、8行的空格去掉。

[code lang=”php” start=”1″ highlight=””] function escapeCE($arr) {
if (version_compare(PHP_VERSION, ‘5.2.3’) >= 0) { //所需PHP版本
$output = htmlspecialchars($arr[2], ENT_NOQUOTES, get_bloginfo(‘charset’), false);
} else {
$needTo = array( //定义需要转换的标签
‘&’ => ‘&’,
‘<‘ => ‘<‘,
‘>’ => ‘>’
);
$data = htmlspecialchars_decode($arr[2]);
$output = strtr($data, $needTo);
}
if (! empty($output)) { //如果有实体符号则进行替换
return $arr[1] . $output . $arr[3];
} else {
return $arr[1] . $arr[2] . $arr[3];
}
}
function replaceCE($data) { //匹配需要转换实体的标签
$replaceTag = preg_replace_callback(‘@(<pre.*>)(.*)(

)@isU’, ‘escapeCE’, $data);
$replaceTag = preg_replace_callback(‘@(<code.*>)(.*)()@isU’, ‘escapeCE’, $replaceTag);
return $replaceTag;
}
add_filter( ‘content_save_pre’, ‘replaceCE’, 9 ); //通过wordpress的add_filter来挂钩
add_filter( ‘excerpt_save_pre’, ‘replaceCE’, 9 ); //支持摘要格式
[/code]

当然,缙哥哥已经将这串代码已经放到主题里了,麻麻再也不用担心我码错代码了!
PS一句:如果代码中含有<pre>或者<code>标签,还是需要手动转义,切记,切记!

赞(0) 打赏
转载请注明来源及链接:缙哥哥 » WordPress编辑器切换自动转义实体符号
分享到: 更多 (0)

评论 2

评论前必须登录!

 

  1. #1

    靠,多说自动识别了 是这个 & l t ;

    微信大学4年前 (2014-10-20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏