我正在尝试使用preg_match,但我无法获得正确的模式。
字符串看起来像[abc] def [ghi] jul [mno]
pqr。
我需要像array(abc => def, ghi => jul, mno => pqr)
这样的东西。
有什么想法吗?
答案 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]);