[英]PHP Filtering Form Input
我敢肯定有人曾经讲过,但是我在快速搜索该网站时没有找到它。 现在,我正在尝试过滤所见即所得的一些输入,以便它将删除诸如¢©÷µ·¶±€£®§™¥之类的字符,但保留HTML字符。 我已经尝试了htmlentities和htmlspecialcharacters,但这似乎仍然使那些字符保持不变。 已经存在的任何方法,或者有人拥有可以处理此问题的正则表达式? 谢谢!
如果您使用的是PHP> 5.2.0,则过滤器可能会有所帮助。
正则表达式应该起作用:
$ text = preg_replace('/ [¢©÷µ·¶±€£®§™¥] * /','',$ text);
您还可以替换以下项目:
$ bad = array('©','®'); $ good = array('©','®');
$ text = preg_replace($ bad,$ good,$ text);
您是否尝试过htmlentities()
函数? 尝试这样:
$text = htmlentities($text);
您还可以在http://php.net/manual/en/function.htmlentities.php上查看其他一些可选参数。 您可能至少需要设置quote_style
和charset
。
如果您想完全删除那些字符,而不是仅仅将它们转换为HTML实体,则htmlentities()
和htmlspecialchars()
不会为您服务。
编辑
我只是注意到您曾经说过要保留HTML实体。 如果是这样,请使用htmlentities()
! 它将所有这些符号转换为等效的html实体。 如果回显它,您仍将看到尝试删除的字符,但是如果查看源,则将看到&name;
格式化实体。
为此,您可能需要使用正则表达式。 大多数PHP函数都试图以一种或另一种格式为您保留这些字符。 令人惊讶的是,它们并不是删除它们的功能,至少我知道!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.