在php中爆炸字符串和html特殊字符过滤器

时间:2010-10-18 22:24:42

标签: php

我有一个带有ckeditor自定义工具栏的textarea,用户只能选择笑脸

现在我希望用户只能使用笑脸和新线功能

所以如果$ comment是我的原始文本输出与html标签,我只想笑脸和文本与新行出现在输出而不是其他HTML标签

示例原始数据:

<p>
    this is a sample text</p>
<p>
    <img alt="angry" src="includes/ckeditor/plugins/smiley/images/angry_smile.gif" title="angry" /></p>
<p>
    text for sample</p>

for html中的新行:

$comment = nl2br($comment);

但是只显示表情符号呢?!

4 个答案:

答案 0 :(得分:2)

如果我理解正确,那么请参考以下内容:strip_tags

以下是我提出的建议:

function smileAndText( $some_text = '' ) {

    if( ! empty( $some_text ) ) {

        $some_text = nl2br( $some_text );

        $some_text = strip_tags( $some_text, '<img><br />' );

    }

    return $some_text;

}

答案 1 :(得分:2)

正如我在previous question中回答的那样,使用htmlspecialchars对输出进行编码,然后使用nl2br将新行转换为<br>代码。

要使用图形替换文本表情符号,您需要一系列正则表达式,而不是尝试分解字符串并将其输出。

以下内容应该给你一些想法:

$comment = htmlspecialchars(comment);
$comment = nl2br($comment);

$smilies = array(
  '/\b:\)\b/' => '<img src="smile.gif" />',   // :)
  '/\b:\(\b/' => '<img src="sad.gif" />',     // :(
  '/\b:p\b/'  => '<img src="tongue.gif" />',  // :p
);

$comment = preg_replace(array_keys($smilies), $smilies, $comment);

答案 2 :(得分:1)

看看php strip_tags http://php.net/manual/en/function.strip-tags.php。你可以做点什么

$comment = strip_tags(nl2br($comment),"<br />, #smiley_tag");

答案 3 :(得分:0)

不确定您正在尝试使用表情符号,但是有一种方法可以在javascript配置文件中配置CK,以便在按下回车键时使用
。我仍然会考虑后期处理替换,但这是在前端实现干净代码的好方法。