检查变量是否包含文本或数字

时间:2011-09-14 21:00:33

标签: php variables preg-match

我正在创建一个搜索功能。用户只能使用a-z A-Z和0-9。我如何检查$ var是否只包含文本或数字,而不是特殊字符?

我尝试过这样的事情:

if (!preg_match('/[^a-z]/i', $search) {
$error = "error...";
}

如果有人有更聪明的解决方案,请告诉我。它也可能是检查特殊字符的东西。

2 个答案:

答案 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
}