Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.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_Arrays - Fatal编程技术网

Php 搜索关键字返回键的数组

Php 搜索关键字返回键的数组,php,regex,arrays,Php,Regex,Arrays,我做了一些搜索,发现了类似的问题,但大多数问题都有字符串键,而不是数字键。基本上,这就是我想要实现的目标: 样本阵列 Array ( [0] => comments=DISABLED [1] => img_carousel=red.jpg,yellow.png,blue.jpg [2] => twitter=http://www.twitter.com ) 像这样运行: $img_carousel = explode('=', $ar

我做了一些搜索,发现了类似的问题,但大多数问题都有字符串键,而不是数字键。基本上,这就是我想要实现的目标:

样本阵列

 Array (
      [0] => comments=DISABLED
      [1] => img_carousel=red.jpg,yellow.png,blue.jpg
      [2] => twitter=http://www.twitter.com
 )
像这样运行:

 $img_carousel = explode('=', $arr[array_search('img_carousel', $arr)]);
$img_carousel = explode('=', array_shift(preg_grep('/img_carousel=/', $arr)))
将返回:

 Array (
      [0] => img_carousel
      [1] => red.jpg,yellow.png,blue.jpg
 )
但是,它不会,并且只返回0/FALSE。我猜这是因为array_search搜索的是精确匹配,而不是字符串中的关键字


我尝试使用preg_grep,不幸的是,我似乎无法理解regex,搜索文本字符串对我来说太难了…:{

从PHP5.3开始,您可以遵循以下示例:

$result = array_filter($arr, function($e) {
    return strpos($e, 'img_carousel') !== false;
});
或者,如果您使用旧版本:

function ifElementContainsImgCarousel($e)
{
    return strpos($e, 'img_carousel') !== false;
}
$result = array_filter($arr, 'ifElementContainsImgCarousel');

从php 5.3开始,您可以遵循以下示例:

$result = array_filter($arr, function($e) {
    return strpos($e, 'img_carousel') !== false;
});
或者,如果您使用旧版本:

function ifElementContainsImgCarousel($e)
{
    return strpos($e, 'img_carousel') !== false;
}
$result = array_filter($arr, 'ifElementContainsImgCarousel');

您可以使用
array\u filter
获取包含关键字的元素

array_filter($sample_array, function($var) use ($keyword) {return strpos($var, $keyword) !== false;})

您可以使用
array\u filter
获取包含关键字的元素

array_filter($sample_array, function($var) use ($keyword) {return strpos($var, $keyword) !== false;})

你想要这样的东西:

 $img_carousel = explode('=', $arr[array_search('img_carousel', $arr)]);
$img_carousel = explode('=', array_shift(preg_grep('/img_carousel=/', $arr)))

你想要这样的东西:

 $img_carousel = explode('=', $arr[array_search('img_carousel', $arr)]);
$img_carousel = explode('=', array_shift(preg_grep('/img_carousel=/', $arr)))

我认为这将在严格的标准下发出警告。
array\u shift()
将数组引用作为其参数,您正在传递函数的输出。好吧,它完成了我想要的,但是,如果@Michael是正确的,您将如何遵守严格的标准?这在PHP 5.3中是否有效?@lemonpole存储
preg_grep()的输出
到一个变量,然后使用该变量作为
array\u shift()
的参数,而不是直接调用
preg\u grep()
。@lemonpole:只需将其拆分为两行而不是一行代码。是的,它将在5.3中工作,我认为这将在严格标准下发出警告。
array\u shift()
将数组引用作为其参数,您正在传递函数的输出。好吧,它完成了我想要的,但是,如果@Michael是正确的,您将如何遵守严格的标准?这在PHP 5.3中是否有效?@lemonpole存储
preg_grep()的输出
转换为一个变量,然后将该变量用作
array\u shift()
的参数,而不是
preg\u grep()
直接调用。@lemonpole:只需将其拆分为两行而不是一行代码。是的,它将在5.3中起作用。在您的示例中,
$keyword
是什么?@zerkms问题标题中的关键字,类似于“img_carousel”。它应该如何传递到匿名函数变量范围?什么是
$keyword
在您的示例中?@zerkms是问题标题中的关键字,类似于“img_carousel”。如何将其传递给匿名函数变量scope?