-2

我有一个论坛,任何用户都可以在其中撰写文章。该论坛由aloha编辑器驱动,用于用户输入。它有一个用于编辑的页面和一个用于显示的页面。但是当用户尝试输入html代码时会出现问题。

假设用户写了一个标题标签

`<h1>header</h1>`

它正在输出

标题

我想输出

<h1>Header</h1>

有什么建议吗?

4

4 回答 4

1

当用户提交文章时,您需要使用 htmlentities ( PHP htmlentities ) 才能将其返回。

于 2014-08-12T03:29:42.117 回答
0

您应该转义 html 代码,例如您应该使用:

&lt;h1&gt;Header&lt;/h1&gt;

代替

<h1>Header</h1>

于 2014-08-12T03:11:34.033 回答
0

我不知道什么是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 标签。

于 2014-08-12T03:59:22.633 回答
0

对不起,但恐怕我的答案不是最好的,我知道有一些更好的技术可以实现这一点(使用@chiwangc 所说的),但如果你曾经坚持过,你可以使用我正在思考的东西。

只需将要输出的 html 代码放在“textarea”中(您可能想要禁用它),例如

<textarea><h1>Header</h1></textarea>

笔记!这只是你的选择,但如果它让你满意,那就欢呼吧。

希望能帮助到你。

于 2014-08-12T03:30:16.097 回答