preg_grep只检查3个特定字母存在

时间:2014-04-09 15:44:28

标签: php regex preg-match

我正在尝试使用preg_grep来返回仅存在3个特定字母的密钥数组,即

数组如下:

$testArray = array(
'XXL' => array(),
'XL' => array(),
'L' => array(),
'M' => array(),
'S' => array(),
'XS' => array()
);

我想运行类似的东西(如果我可以让它工作:))

$res = preg_grep('[^XLS]', $testArray);

并获得没有'M'键的返回数组,即

$res = array(
'XXL' => array(),
'XL' => array(),
'L' => array(),
'S' => array(),
'XS' => array()
);

我尝试了多个正则表达式,但我得到了所有的键或没有,有人可以帮忙吗?

非常感谢, 基隆

1 个答案:

答案 0 :(得分:2)

preg_grep()不适用于多维数组。您必须使用array_keys()单独获取密钥并在其上应用preg_grep()。现在将array_intersect_key()array_flip()结合使用来创建结果数组:

$keys = preg_grep('/[XLS]/', array_keys($testArray));
$result = array_intersect_key($testArray, array_flip($keys));

输出:

Array
(
    [XXL] => Array
        (
        )

    [XL] => Array
        (
        )

    [L] => Array
        (
        )

    [S] => Array
        (
        )

    [XS] => Array
        (
        )

)

Demo