我的字符串有以下几种模式:
我正在使用这个正则表达式
preg_match("[^?]+(=[^&]+){*}", $url )
但它不起作用。如何检查字符串是否遵循这3种模式或更多。
?字=字&安培;字=字&安培;字=字
答案 0 :(得分:1)
首先,您需要添加正则表达式分隔符,因为PHP preg_
函数需要它们才能使正则表达式起作用。
此外,{*}
不是量词,它匹配0 + {
个符号,然后是文字}
。
您可以使用
'~^\?[^&]+(?:&[^&]+)*$~'
请参阅regex demo。
^
- 字符串开头\?
- 文字?
[^&]+
- 除&
(?:&[^&]+)*
- 零个或多个序列
&
- 文字&
符号[^&]+
- 除&
$
- 字符串结束。答案 1 :(得分:0)
你需要(可能名字很差的)parse_str
函数。
// Parse the query string
parse_str("?language=english&test=1", $arr);
现在$arr
将是一个关联数组,包含您最初放入查询字符串中的键值:
array("language" => "english", "test" => "1")