PHP RegEx字符串替换

Mat*_*Mat 0 php regex

我最近写了一个javascript RegExp来清理我前端的数据,我现在需要为我的PHP后端做同样的事情,但是我没有在PHP工作一段时间我遇到了麻烦.下面是javascript RegExp,有人可以帮我转换为PHP吗?

var illegalChars = /[\(\)\<\>\,\;\:\.\~\@\#\$\!\%\^\&\*\'\?\(\)\+\=\{\}\`\\\/\"\[\]]/gi;  
var siteSuggest = $(this).val().toUpperCase().split(' ').join('').replace(new RegExp(illegalChars), "");
Run Code Online (Sandbox Code Playgroud)

因此,总之,我希望全局删除所有非法字符,删除空格并将变量大写,因为该变量将用于在sql中创建数据库或表.

irc*_*ell 10

老实说,我认为你最好不要指定好的角色,而不是试图找到所有不好的角色(毕竟,你忘记了很多非ASCII角色).我会这样做:

$regex = '#[^a-z0-9_]#i';
$val = preg_replace($regex, '', $val);
$val = strtoupper($val);
Run Code Online (Sandbox Code Playgroud)

这个正则表达式将允许所有字符,如所有alpha,数字和_.如果你想要更多,只需将它们添加到角色类.没有必要拆分空格,因为正则表达式将匹配空格(字符类开头的^是否定的)...

您可以像这样调整JS:

var illegalChars = /[^a-z0-9_]/gi;
var siteSuggest = $(this).val().replace(new RegExp(illegalChars), '').toUpperCase();
Run Code Online (Sandbox Code Playgroud)