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?