将字符串转换为关联数组

时间:2010-01-02 13:33:22

标签: php string parsing

如何将这样的字符串转换为PHP中的关联数组?

key1="value" key2="2nd value" key3="3rd value"

3 个答案:

答案 0 :(得分:6)

您可以使用正则表达式来获取键/值对:

preg_match_all('/(\w+)="([^"]*)"/', $str, $matches);

但这只会获得完整的键/值对。像key=value"这样的无效输入无法识别。解析器会做得更好。

答案 1 :(得分:4)

编辑:Gumbo的答案是更好的解决方案。

这对你有好处吗?

假设您的字符串位于如下变量中:

$string = 'key1="value" key2="2nd value" key3="3rd value"';

首先:

$array = explode('" ', $string);

你现在有

array(0 => 'key1="value', 1=>'key2="2nd value', 2=>'key3="3rd value');

然后:

$result = array();
foreach ($array as $chunk) {
  $chunk = explode('="', $chunk);
  $result[$chunk[0]] = $chunk[1];
}

答案 2 :(得分:1)

使用Gumbo建议的正则表达式我想出了以下内容,用于将给定的字符串转换为关联数组:

$s = 'key1="value" key2="2nd value" key3="3rd value"';
$n = preg_match_all('/(\w+)="([^"]*)"/', $s, $matches);

for($i=0; $i<$n; $i++)
{
    $params[$matches[1][$i]] = $matches[2][$i];
}

我想知道你是否有任何意见。