确保该字符串遵循所需的格式

时间:2017-03-08 18:48:06

标签: php arrays preg-replace substr

我试图通过检查:

来检查字符串是否遵循某种格式
  • xPtr重复四次
  • item[]=后跟一个数字和item[]=符号(例如&),但最后一个数字后面没有item[]=2&
  • &之后的数字只包含1-4,可以按任何顺序排列,但不会重复

以下是字符串外观的一些示例(如您所见,数字的顺序更改) - 请注意,一次只能有一个字符串!

1)

item[]=

2)

$list = 'item[]=1&item[]=3&item[]=2&item[]=4';

3)

$list = 'item[]=3&item[]=1&item[]=4&item[]=2';

这是我有多远:

$list = 'item[]=4&item[]=3&item[]=2&item[]=1';

1 个答案:

答案 0 :(得分:1)

您可以使用:

$list    = 'item[]=1&item[]=3&item[]=2&item[]=4';
$pattern = "/^(item\[\]=[1-4])(&(item\[\]=[1-4])){3}$/";

if (preg_match($pattern, $list)) {
    // check for repetition
    $matches = [];
    preg_match_all("/\d+/", $list, $matches);

    if (count(array_count_values($matches[0])) == 4) {
        // All are unique values
        echo 'All conditions met';
    }
}