我有以下字符串。
?page=1&sort=desc¶m=5&parm2=25
我需要检查输入字符串url是否采用严格格式,但变量值除外。 像page =,sort =,param =,param2。
请建议正则表达式。 感谢
答案 0 :(得分:10)
您应该使用parse_str并检查您想要的所有参数是否都设置为isset
。正则表达式不是去这里的方式。
答案 1 :(得分:1)
也许这个:
\?page=\d+&sort=.+¶m=\d+¶m2=\d+
转换为:
?page = followed by any digit repeated 1 or more times
& sort = followed by any character repeated 1 or more times
& param = followed by any digit repeated 1 or more times
& param2 = followed by any digit repeated 1 or more times
我认为Alin Purcaru的建议更好
修改强>
(\?|&)(page=[^&]+|sort=[^&]+|param=[^&]+|parm2=[^&]+)
这样顺序无关紧要
答案 2 :(得分:0)
如果您关心参数的顺序,可以这样:
\?page=[^&]+&sort=[^&]+param=[^&]+param2=[^&]+$
但是Alin Purcaru是对的 - 使用已经编写的parse_str函数来执行此操作
答案 3 :(得分:0)
您可以使用以下regx / \?page = [^&] * sort = [^&] * param = [^&] * param2 = /`来匹配:
if (preg_match("/\?page=([^&]*)sort=([^&]*)param=([^&]*)param2=([^&]*)/i", $inputstr, $matches))
{
echo "Matches:";
print_r($matches); // matches will contain the params
}
else
echo "Params nor found, or in wrong order;
答案 4 :(得分:0)
正则表达式为^\?([\w\d]+=[\w\d]+(|&))*$
只要您的值为Alpha数字,但如果您想验证网址http://www.php.net/manual/en/book.filter.php