WordPress编辑器如何实现自动转义实体符号?

HTML编辑器编辑时遇到的最大的问题就是高亮代码里的<和>总是会因为没有转义而使得文章排版错乱,WordPress编辑器如何实现自动转义实体符号?

WordPress编辑器如何实现自动转义实体符号? (https://www.wpzt.net/) WordPress基础教程 第1张

转换至实体的符号:<、>、&**p;,支持的标签:<pre><code>,用到的函数:htmlspecialchars()此函数把一些预定义的字符转换为HTML实体。将以下代码扔到functions.php,记得把6、7、8行的空格去掉。

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( //定义需要转换的标签

‘&**p;’ => ‘&**p;’,

‘<‘ => ‘<‘,

‘>’ => ‘>’

);

$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 ); //支持摘要格式

当然,我们已经将这串代码已经放到主题里了,如果代码中含有<pre>或者<code>标签,还是需要手动转义。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容