在键值对PHP分割字符串(PHP Split string in key value pairs)

2019-10-22 15:55发布

我知道这已经被问过,但,这是一个有点不同。

我有一个字符串,如:

[性]文本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)

Answer 1:

你可以使用preg_match_all()

$title = '[de]Text1[fr]Text2[en]Text3';
preg_match_all('~\[([^[]+)\]([^[]+)~', $title, $match);
$output = array_combine($match[1], $match[2]);

演示

你的榜样也会以最小的变化工作: 演示



Answer 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
)


文章来源: PHP Split string in key value pairs