如何检查字符串是否遵循给定的正确模式/格式

时间:2016-10-10 07:11:02

标签: php regex

我的字符串有以下几种模式:

  1. 语言=英语&安培;模块=登录
  2. 语言=英语&安培;模块=主&安培;菜单=仪表板
  3. 语言=英语&安培;模块=主&安培;菜单=仪表板&安培;行动=视图
  4. 我正在使用这个正则表达式

    preg_match("[^?]+(=[^&]+){*}", $url )
    

    但它不起作用。如何检查字符串是否遵循这3种模式或更多。

    字=字&安培;字=字&安培;字=字

2 个答案:

答案 0 :(得分:1)

首先,您需要添加正则表达式分隔符,因为PHP preg_函数需要它们才能使正则表达式起作用。

此外,{*}不是量词,它匹配0 + {个符号,然后是文字}

您可以使用

'~^\?[^&]+(?:&[^&]+)*$~'

请参阅regex demo

  • ^ - 字符串开头
  • \? - 文字?
  • [^&]+ - 除&
  • 以外的1个或多个符号
  • (?:&[^&]+)* - 零个或多个序列
    • & - 文字&符号
    • [^&]+ - 除&
    • 以外的1个或多个符号
  • $ - 字符串结束。

答案 1 :(得分:0)

你需要(可能名字很差的)parse_str函数。

// Parse the query string
parse_str("?language=english&test=1", $arr);

现在$arr将是一个关联数组,包含您最初放入查询字符串中的键值: array("language" => "english", "test" => "1")