PHP 在键值对中拆分字符串

标签 php arrays split explode

我知道之前有人问过这个问题,但这有点不同。

我有一个像这样的字符串:

[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

您的示例只需稍作改动即可工作: demo

关于PHP 在键值对中拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29620231/

相关文章:

php - LINES TERMINATED BY 和 FIELDS TERMINATED BY 的多种可能性 - MySQL

javascript - 使用函数实现 Split 方法

mysql - 将一列拆分为多列 [Wordpress]

php - 如何检查字符串是否包含特定单词?

php - 如何读取单元格的可见数据,而不是PHPExcel中的底层公式?

php - 在 Concrete5 中定位模板 CSS 文件

c - 不明白为什么会出现段错误

c - 为什么 sizeof 运算符给出不同的输出

python - 将 numpy 字符串数组转换为日期时间

javascript - 如何在JavaScript中分割二维数组?