我需要从文章中提取出作者提到的城市和区名。
例如
hi,every one. I'm at chaoyang
有一个数组提供了这样的数据:
array(
'beijing' => array('chaoyang'),
'shanghai' => array('xuhui', 'jingan')
);
现在的能生成的正则匹配规则是
((chaoyang)|(xuhui|jingan))试问我能不能知道它匹配到了那个组里的集合? 是(chaoyang) 还是 (xuhui|jingan) ?
如果不能 各位有什么好算法吗?我不想我即使获取到了区,还要再去遍历一次数组找到所属城市,因为这个数组会非常庞大
例如
hi,every one. I'm at chaoyang
有一个数组提供了这样的数据:
array(
'beijing' => array('chaoyang'),
'shanghai' => array('xuhui', 'jingan')
);
现在的能生成的正则匹配规则是
((chaoyang)|(xuhui|jingan))试问我能不能知道它匹配到了那个组里的集合? 是(chaoyang) 还是 (xuhui|jingan) ?
如果不能 各位有什么好算法吗?我不想我即使获取到了区,还要再去遍历一次数组找到所属城市,因为这个数组会非常庞大
$a = array(
'beijing' => array('chaoyang'),
'shanghai' => array('xuhui', 'jingan')
);
$t = array();
foreach($a as $key=>$item) {
$t[] = "(?<$key>" . join('|', $item) . ')';
}
$p = join('|', $t);
preg_match_all("/$p/", $s, $r);print_r($r);Array
(
[0] => Array
(
[0] => chaoyang
[1] => xuhui
) [beijing] => Array
(
[0] => chaoyang
[1] =>
) [1] => Array
(
[0] => chaoyang
[1] =>
) [shanghai] => Array
(
[0] =>
[1] => xuhui
) [2] => Array
(
[0] =>
[1] => xuhui
))