我有一个带有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);
但是只显示表情符号呢?!
答案 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,以便在按下回车键时使用
。我仍然会考虑后期处理替换,但这是在前端实现干净代码的好方法。