RegEx白名单问题

Jam*_*ond 3 php regex string preg-replace

我有点困惑.我正在通过我写的基本清理函数运行所有输入,只允许某些字符,但[]仍然允许使用诸如字符之类的字符.

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

知道为什么这样做吗?

Vol*_*erK 7

你的模式字符串中有一个错误导致问题

/[^a-zA-z0-9_-]
你想要A- Z.


顺便说一下:你可能对字符类[:alnum:]和/或PCRE_CASELESS修饰符感兴趣