繁体   English   中英

PHP过滤表单输入

[英]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_stylecharset

如果您想完全删除那些字符,而不是仅仅将它们转换为HTML实体,则htmlentities()htmlspecialchars()不会为您服务。

编辑

我只是注意到您曾经说过要保留HTML实体。 如果是这样,请使用htmlentities() 它将所有这些符号转换为等效的html实体。 如果回显它,您仍将看到尝试删除的字符,但是如果查看源,则将看到&name; 格式化实体。


为此,您可能需要使用正则表达式。 大多数PHP函数都试图以一种或另一种格式为您保留这些字符。 令人惊讶的是,它们并不是删除它们的功能,至少我知道!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM