用php中的数组参数验证url?

时间:2015-09-01 07:17:11

标签: php regex preg-match

我正在尝试为以下网址添加preg_match验证:

http://test.com/page/?param1[0=a&param2[1]=b

如果您在上面的示例中看到缺少一个方括号。

2 个答案:

答案 0 :(得分:3)

我认为你不需要正则表达式。您可以简单地使用parse_url,它将为您进行解析和验证,然后您可以检查每个组件是否符合您的预期。

答案 1 :(得分:1)

使用两个正则表达式进行检查,这可能适用于您

$website = 'http://test.com/page/?param1[0=a&param2[1]=b';

if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website) || !preg_match("/^[^\[\]]*+(\[(?>[^\[\]]|(?1))*+\][^\[\]]*+)*$/",$website)) {
    echo "Invalid URL"; 
}else{
    echo 'valid';
}

O / p:无效网址

此检查的唯一问题是它只检查支架不平衡,而不是它的位置。