我知道之前有人问过这个问题,但这有点不同。
我有一个像这样的字符串:
[de]Text1[fr]Text2[en]Text3
我需要像这样拆分成键值对
array('de'=>'Text','fr'=>'Text','en'=>'Text')
我现在是这样做的,但这不是很优雅(并且在数组的第一个位置产生一个空对象:
$title = '[de]Text1[fr]Text2[en]Text3';
$titleParts = explode('[',$title);
$langParts;
foreach($titleParts as $titlePart){
$langPart = explode(']',$titlePart);
$langParts[$langPart[0]] = $langPart[1];
}
print_r($langParts);
输出:
Array ( [] => [de] => Text1 [fr] => Text2 [en] => Text3 )
最佳答案
你可以使用 preg_match_all()
:
$title = '[de]Text1[fr]Text2[en]Text3';
preg_match_all('~\[([^[]+)\]([^[]+)~', $title, $match);
$output = array_combine($match[1], $match[2]);
您的示例只需稍作改动即可工作: demo
关于PHP 在键值对中拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29620231/