独书先生 Menu

Viewing all items for tag 转义

html解析<号>号出现字符实体< &gt: &如何转义

问题:

在用wordpress的markdown插件写文章的时候,发现代码块偶尔无法正常解析 <>

类似这样:

暴雨直下眼迷茫,
大风骤起飕脸庞。
雷声贯耳家中藏,
草香扑鼻思故乡。
&lt;/pre&gt;&lt;/div&gt;

分析:

说明在解析文章的时候,得到的字符串为字符实体,然后网上找了通过字符串替换的方法解决这个问题

以下为相互转换的js函数

//<转义为<
function escapeHTML(str){
    str = "" + str;
    return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "&apos;");
},
//<还原为<
function unescapeHTML(str){
    str = "" + str;
    return str.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(/&apos;/g, "'");
}

解决:

运用到wordpress博客中,可以在编辑主题中,修改function.php源码,加入一段插入页脚的方法,塞入你的js代码即可,以下为新加入的页脚代码,加在function.php的头部即可,后续有新的js代码也可以写在这里:

// 自定义脚本 ------------------------------------------start
function wpb_hook_javascript_footer() {
?>
<script>
function unescapeHTML(a){
    a = "" + a;
    return a.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&").replace(/"/g, '"').replace(/&apos;/g, "'");
}
var codeContainers = document.querySelectorAll(".codecolorer-container");
if(codeContainers.length > 0){
    for(var i = 0; i < codeContainers.length; i++){
        codeContainers[i].innerText = unescapeHTML(codeContainers[i].innerText)
    }
}
</script>
<?php
}
add_action('wp_footer', 'wpb_hook_javascript_footer');
// 自定义脚本 ------------------------------------------end

感谢:
https://www.cnblogs.com/LiuLiangXuan/p/5212155.html
https://boke112.com/post/5981.html