如何将这样的字符串转换为PHP中的关联数组?
key1="value" key2="2nd value" key3="3rd value"
答案 0 :(得分:6)
您可以使用正则表达式来获取键/值对:
preg_match_all('/(\w+)="([^"]*)"/', $str, $matches);
但这只会获得完整的键/值对。像key=value"
这样的无效输入无法识别。解析器会做得更好。
答案 1 :(得分:4)
这对你有好处吗?
假设您的字符串位于如下变量中:
$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];
}
我想知道你是否有任何意见。