我有一个论坛,任何用户都可以在其中撰写文章。该论坛由aloha编辑器驱动,用于用户输入。它有一个用于编辑的页面和一个用于显示的页面。但是当用户尝试输入html代码时会出现问题。
假设用户写了一个标题标签
`<h1>header</h1>`
它正在输出
标题
我想输出
<h1>Header</h1>
有什么建议吗?
我有一个论坛,任何用户都可以在其中撰写文章。该论坛由aloha编辑器驱动,用于用户输入。它有一个用于编辑的页面和一个用于显示的页面。但是当用户尝试输入html代码时会出现问题。
假设用户写了一个标题标签
`<h1>header</h1>`
它正在输出
我想输出
<h1>Header</h1>
有什么建议吗?
当用户提交文章时,您需要使用 htmlentities ( PHP htmlentities ) 才能将其返回。
您应该转义 html 代码,例如您应该使用:
<h1>Header</h1>
代替
<h1>Header</h1>
我不知道什么是aloha 编辑器,但您绝对应该检查用户输入是否有安全破坏尝试(js-includes、sql-injects 等)。例如,它可能是这样的功能,我在我的一个项目中使用了它:
function filterMsg($m){
$m=trim( stripslashes( urldecode($m) ) );
$m=htmlentities( $m, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8' );
$m=preg_replace( '/[\\s\\t]+/iu', ' ', $m );
$m=preg_replace( '/[\\s\\|]{2,999}/iu', '|', $m);
$m=preg_replace( '/([^\\|]{1,40})[\\|]+/iu', '$1 ', $m);
$m=str_replace( '|', '<br>', $m);
$m=str_replace( "\n", '<br>', $m);
return $m;
}
但是,如果您只是想显示未解析的内容,您可以使用<xmp></xmp>
html 标签。
对不起,但恐怕我的答案不是最好的,我知道有一些更好的技术可以实现这一点(使用@chiwangc 所说的),但如果你曾经坚持过,你可以使用我正在思考的东西。
只需将要输出的 html 代码放在“textarea”中(您可能想要禁用它),例如
<textarea><h1>Header</h1></textarea>
笔记!这只是你的选择,但如果它让你满意,那就欢呼吧。
希望能帮助到你。