固定字符串的正则表达式

时间:2010-10-13 13:24:11

标签: php regex query-string

我有以下字符串。

?page=1&sort=desc&param=5&parm2=25

我需要检查输入字符串url是否采用严格格式,但变量值除外。 像page =,sort =,param =,param2。

请建议正则表达式。 感谢

5 个答案:

答案 0 :(得分:10)

您应该使用parse_str并检查您想要的所有参数是否都设置为isset。正则表达式不是去这里的方式。

答案 1 :(得分:1)

也许这个:

\?page=\d+&sort=.+&param=\d+&param2=\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

,可能需要查看过滤器