Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中检查数组键与特定字符串的匹配_Php_Regex - Fatal编程技术网

如何在php中检查数组键与特定字符串的匹配

如何在php中检查数组键与特定字符串的匹配,php,regex,Php,Regex,我需要获取具有类似'[['的模式的元素。 我已尝试使用数组\u key\u exists():- 如果(数组\u键\u存在(“[*PRODUCT\u IMAGE2*]”,$array)) 但我只想与'[' 在这方面,有谁能帮我使用preg\u grep()和array\u keys()如下:- $array = array( "[ci_id]" => '144309', "[NEW flag]" => 'No',

我需要获取具有类似
'[['
的模式的元素。 我已尝试使用
数组\u key\u exists()
:-

如果(数组\u键\u存在(“[*PRODUCT\u IMAGE2*]”,$array))

但我只想与
'['

在这方面,有谁能帮我使用
preg\u grep()
array\u keys()
如下:-

 $array = array(
                "[ci_id]" => '144309',
                "[NEW flag]" => 'No', 
                "[[*PRODUCT_IMAGE_ANCHOR1*]]" => ,
                "[[*PRODUCT_IMAGE2*]]" => '154154154' 
          );
输出:-

或者也可以使用
strpos()
执行此操作:-

$matches  = preg_grep ('/[.*?]/i', array_keys($array));

print_r($matches);

输出:-

如果知道元素索引值,下面的代码将为带有double[[in]的键提供true

foreach($array as $key=>$val){
  if(strpos($key,'[')!== false){
    echo $key ."is matched with [*] pattern";
    echo PHP_EOL;
  }
}
如果您可以通过检查键来确定[[是否存在],那么下面的代码应该可以工作

$test = array("a"=>'a',"[a]"=>'a',"[[a]]"=>'a',"b"=>'b',"c"=>'c');
var_dump(array_key_exists("[[a]]", $test));

你有一些PHP代码是有效的吗?很抱歉,但不清楚你用无效的数组表示法到底想表达什么。谢谢你,我使用foreach。我得到了我所期望的。@KaifKhan使用第一个更简单的解决方案。顺便说一句,很高兴帮助你是的,第一个非常快,但我们只得到了正确的键。我们没有得到它的值。@kaif khan将这些键与$array一起使用并获取值。这太简单了,manOh!谢谢你的帮助,兄弟。
$test = array("a"=>'a',"[a]"=>'a','[[a]]'=>'a',"b"=>'b',"c"=>'c');
$values = array();
foreach ($test as $key=>$value) {
    if (stripos('[[', substr($key, 0, 2)) !== false) {
        array_push($values, $value);
    }
}