我正在创建一个搜索功能。用户只能使用a-z A-Z和0-9。我如何检查$ var是否只包含文本或数字,而不是特殊字符?
我尝试过这样的事情:
if (!preg_match('/[^a-z]/i', $search) {
$error = "error...";
}
如果有人有更聪明的解决方案,请告诉我。它也可能是检查特殊字符的东西。
答案 0 :(得分:2)
你几乎就在那里。只需在正则表达式中添加数字0-9,如下所示:
if(preg_match('/[^a-z0-9]/i', $search))
{
$error = "Error...";
}
/i
标志告诉表达式忽略大小写,因此在字母列表中不需要A-Z
。
在原始代码中,您正在查找不是字母或数字的任何内容,同时还要检查preg_match()
是否匹配任何东西 - 你创造了一个双重否定。如果不是的任何内容 ,则上面的代码会执行if()
。在评论中充分归功于@brain。
要允许其他字符,只需将它们添加到大括号内的字符:
if(preg_match('/[^a-z0-9 \.]/i', $search))
{
$error = "Error...";
}
此示例允许空格和.
(点)。
答案 1 :(得分:2)
这样的事情:
if(!preg_match('/^[a-zA-Z0-9]+$/', $search)) {
// error
}