【发布时间】:2023-01-23 18:30:10
【问题描述】:
我有一个字符串"key1=value1,key2=value2,...,key-n=value-n"。
在不知道 n 是什么的情况下,如何将字符串解析为关联数组,例如:
$result = ["key1" => "value1", "key2" => "value2",...,"key-n" => "value-n"];
【问题讨论】:
我有一个字符串"key1=value1,key2=value2,...,key-n=value-n"。
在不知道 n 是什么的情况下,如何将字符串解析为关联数组,例如:
$result = ["key1" => "value1", "key2" => "value2",...,"key-n" => "value-n"];
【问题讨论】:
在您的示例中,您似乎只想提取和分隔键和值。
$result = [];
foreach (explode(',', $string) as $pair) {
list($key, $value) = explode('=', $pair);
$result[$key] = $value;
}
如果你需要抛出一些正则表达式魔法来确保它符合特定的语法。这是一个例子:
$result = [];
foreach (explode(',', $string) as $pair) {
if (!preg_match('#^(.+-?.*)=(.+-?.*)$#', $pair, $matches)) continue;
$result[$matches[1]] = $matches[2];
}
【讨论】:
$csv = "last, first","1234 N Main St., New York, NY"。
您可以将字符串解析为 CSV,然后在 = 符号上展开。
$array = str_getcsv('key1=value1,key2=value2,...,key-n=value-n');
$newarray = array();
foreach($array as $pairs){
if(strpos($pairs, '=') !== FALSE){
list($key, $value) = explode('=', $pairs);
$newarray[$key] = $value;
} else {
//no value present, what to do?
}
}
print_r($newarray);
【讨论】:
str_getcsv 用于解析 CSV,php.net/manual/en/function.str-getcsv.php 也可用于其他带分隔符的字符串。您可以为数据定义定界符、封闭字符以及转义字符。爆炸不能做那些事情。