这是我的数组输出
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
}
让我知道
答案 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