PHP preg匹配模式[var1] var2

时间:2015-11-12 13:16:36

标签: php preg-match preg-match-all

我正在尝试使用preg_match,但我无法获得正确的模式。

字符串看起来像[abc] def [ghi] jul [mno] pqr。

我需要像array(abc => def, ghi => jul, mno => pqr)这样的东西。

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

试试这个正则表达式

/\[([a-z]+)\]( [a-z]+)?/
preg_match_all()

中的

之后尝试

$regex = '/\[([a-z]+)\][ ]?([a-z]+)?/';
$string = '[abc] def [ghi] jul [mno] pqr';

preg_match_all($regex, $string, $matches);

$arr = array();

foreach($matches[1] as $index => $match){
    $arr[$match] = $matches[2][$index];
}

print_r($arr);

您可以为isset()添加$matches[2][$index],但我认为我的代码也有效。

@MateiMihai 建议$result = array_combine($matches[1], $matches[2]);