如何在数组中仅显示匹配关键字

时间:2011-11-25 22:41:25

标签: php

这是我的数组输出

Array
(
    [0] => Array
        (
            [tweet_text] => Fedora 16 "Verne" released! http://t.co/lECbdzE0 #Fedora #Linux
        )

    [1] => Array
        (
            [tweet_text] => Ubuntu 11.10 "Oneiric Ocelot" released! #Ubuntu #Linux
        )

)

查找Ubuntu个关键字的示例。从当前数组中我如何过滤以仅显示

Array ( [1] => Array (
            [tweet_text] => Ubuntu 11.10 "Oneiric Ocelot" released! #Ubuntu #Linux
        )   
)

代码

$keywords = array('Ubuntu');

foreach ($keywords as &$keyword) {
    $keyword = preg_quote($keyword);
}

$regex = "/(" . implode('|', $keywords) . ")/";
$check = preg_match($regex, $anArray);

if($check == 1)  {
 // here I want to display only Ubuntu
}

让我知道

2 个答案:

答案 0 :(得分:1)

这里有一些方法,基本上你可以查看你当前的函数:preg_match。顺便说一句,如果它需要一个字符串,我认为你不能把数组放入subject参数。现在我猜你会在那里放一个错误名字的字符串。

您也可以使用它来保存匹配的匹配项:

$check = preg_match($regex, $string, $matches);
print_r($matches);

如果它是一个数组你应该像一个结果一样接近它并循环它(有更好的方法,但这是你正在使用的方法,我试着更好地教你。

// Your code ....

foreach($anArray as $rule) {
  $check = preg_match($regex, $anArray, $matches);
  if($check == 1) {
    echo print_r($matches);
  }
}

答案 1 :(得分:1)

preg_grep - 返回与模式匹配的数组条目

例如: -

$arr = array('k'=>'ubuntu', 'j'=>'ubuntu1', 'n'=>'fedorra');
$matches = preg_grep('/ubuntu/i', $arr);

如果您的原始来源是多维数组,则 你可以尝试: -

 $cmp = array();
 foreach ($src as $key=>$arr)
 {
   $cmp[$key] = $arr['tweet_text'];
 }
 $matches = preg_grep('/ubuntu/i', $cmp);

 // $matches will be an associate array contains the matches
 // and $matches and $src are using same index key