我知道这已经被问过,但,这是一个有点不同。
我有一个字符串,如:
[性]文本1 [FR]文本2 [IN]文本3
我需要像键值对分裂
阵列( '去'> '文本', 'FR'=> '文本', '烯'> '文本')
我不喜欢这样的时刻,但这不是很优雅(和数组首先产生一个空的对象:
$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);
输出:
阵列([] => [DE] =>文本1 [FR] =>文本2 [EN] =>文本3)
你可以使用preg_match_all()
$title = '[de]Text1[fr]Text2[en]Text3';
preg_match_all('~\[([^[]+)\]([^[]+)~', $title, $match);
$output = array_combine($match[1], $match[2]);
演示
你的榜样也会以最小的变化工作: 演示
尝试使用preg_match_all()
<?php
$title = '[de]Text1[fr]Text2[en]Text3';
preg_match_all('/([\[a-z\]]{1,})([a-zA-Z0-9]{1,})/',$title,$match);
if(isset($match[2])) {
foreach($match[1] as $key => $value) {
$array[str_replace(array("[","]"),"",$value)] = $match[2][$key];
}
}
print_r($array);
?>
给你:
Array
(
[de] => Text1
[fr] => Text2
[en] => Text3
)