2010-10-18 81 views
1

新的生产线,但过滤器的HTML标签我想我的输入或文本域值只接受<br>具有新线接受<br>在PHP

$comment = trim($comment); 
$comment = stripslashes($comment) ; 

虽然我不希望接受<br>新线,但我不想接受html标签

有什么建议吗?

+0

为什么你已经有了''
从标签一个textarea?谁愿意输入它而不是按Enter键? – 2010-10-18 17:46:50

回答

3

更好的解决方案是允许用户在文本区域中输入新行,并在您使用nl2br显示文本时将它们翻译为<br>标签。

当您显示文本时,首先编码html实体,然后将换行符翻译为<br>标签。如果您在htmlspecialchars之前使用nl2br,那么您最终还会编码<br>标签。

echo (nl2br(htmlspecialchars($text)); 
+1

不要使用htmlentities。使用htmlspecialchars。 – 2010-10-18 17:51:59

0

您可以允许文本区域换行符。然后,您可以使用这些作为<br> s,只需在修剪并剥离所有标记之后替换它们,或者使用工具将纯文本显示为html。

-1

除非您正在构建SQL查询,否则不应该调用stripslashes。

+0

哦,不,恰恰相反,在构建SQL查询的过程中,stripslashes完全无关紧要。 – 2010-10-18 17:51:22

+0

你已经倒过来了。如果启用了魔术引号,则默认情况下会将斜线添加到所有内容中,所以除非您正在构建SQL查询,否则您需要调用stripslashes *。 – 2010-10-18 17:54:59

+1

@Josh你已经倒退了。如果已启用魔术引号,则需要无条件地致电strips strips ** ** – 2010-10-18 17:57:34

-2

可以使用strip_tags这需要$allowable_tags作为其第二个参数:

$comment = strip_tags($comment, '<br>'); 

http://www.php.net/manual/en/function.strip-tags.php

+0

你在说'strip_tags',但是在你的例子中使用'trim' :-) – naivists 2010-10-18 17:54:49

+0

耶稣你们在快速投票时,我在发布答案的10秒内字面地编辑它:< – WakiMiko 2010-10-18 18:00:51

+2

为了让你知道,这是众所周知的XSS漏洞 – 2010-10-18 18:04:05