php - 正则表达式白名单问题

标签 php regex string preg-replace

我有点困惑。我正在通过我编写的基本清理功能运行我的所有输入,以仅允许某些字符,但仍然允许使用诸如 [] 之类的字符。

function sanitize($input) {
$pattern = "/[^a-zA-z0-9_-]/";
$filtered = preg_replace($pattern, "", $input);
return $filtered;}

知道它为什么这样做吗?

最佳答案

您的模式字符串中有一个拼写错误导致了问题

/[^a-zA-z0-9_-]
您需要 A-Z


顺便说一句:您可能对字符类 [:alnum:] 感兴趣和/或 PCRE_CASELESS modifier

关于php - 正则表达式白名单问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3600103/

相关文章:

php - 在线或离线功能 PHP

java - 拆分递归组

regex - 如何查找全部大写字母且不含空格的单词?

c# - 如何将字符串分成多个部分 C#

java - 当我想要颜色的 JButton 名称在字符串中时,如何更改 JButton 的颜色?

php - PHP 支付错误代码 13113 中的 Paypal API Express Checkout

php - mysql if语句true选择更多数据

php - 将多个正则表达式合并为一个

c - 如何在C中打印这个字符串

PHP - 添加到购物车按钮将空白添加到数据库