在php中使用数组参数验证url?

在php中使用数组参数验证url?,php,regex,preg-match,Php,Regex,Preg Match,我正在尝试为URL添加preg\u match验证,如: http://test.com/page/?param1[0=a¶m2[1]=b 如果您在上面的示例中看到缺少一个方括号。我认为您不需要正则表达式。您可以简单地使用,它将为您进行解析和验证,然后您可以检查每个组件是否如您所期望的那样。使用两个正则表达式进行检查,这可能适合您 $website = 'http://test.com/page/?param1[0=a&param2[1]=b'; if (!preg_match

我正在尝试为URL添加
preg\u match
验证,如:

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


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

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

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

$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:无效的URL


这个检查的唯一问题是它只检查括号不平衡,而不是它的位置。

我们确实需要知道URL中可能存在的一些变化,否则您只需转义特殊字符并使用URL作为正则表达式。您认为检查字符串的
[
s和
]
s?例如,
如果(!preg\u match('/^[^\[\]]*+(\[?>[^\[\]]]].[124;(?1))*+\][^\[\]*+)+$/,$url){返回false;}
?@Reshma:如果你认为我的方法对你有效,请告诉我,以便我可以将其作为答案发布。它仅适用于给定的示例param1[0=a¶m2[1]=b。这不是验证时只使用上面的数组结构所必需的。Url可以是任何有效的链接。但是如果有数组参数,我想添加验证。感谢您的回答,我已经尝试使用parse_Url以及parse_str等所有解析函数来进一步检查组件。但它没有实现我的请求uirementsYes它似乎工作正常。我需要检查一下使用分隔符“&”。谢谢你的回答。