给定:
$val = "font-size:12px;color:#ff0000;font-family:Arial";
以下代码将字符串分解两次,以生成数组的数组:
$val = explode(';',$val);
foreach($val as &$v)
$v = explode(':',$v);
var_dump($val);
输出为:
array(3) {
[0]=>
array(2) {
[0]=>
string(9) "font-size"
[1]=>
string(4) "12px"
}
[1]=>
array(2) {
[0]=>
string(4) "fill"
[1]=>
string(7) "#ff0000"
}
[2]=>
&array(2) {
[0]=>
string(11) "font-family"
[1]=>
string(5) "Arial"
}
}
是否有更有效/更清洁的方法来达到相同的结果?
我更喜欢没有 lambda 函数的东西,因为 PHP 5.2 不支持它们。但这无论如何都是一个纯粹的智力问题,所以,这只是一个偏好。
最佳答案
您可以尝试:
$input = "font-size:12px;color:#ff0000;font-family:Arial";
preg_match_all('/([^:]*?):([^;]*);?/', $input, $matches);
$output = array_combine($matches[1], $matches[2]);
输出:
array(3) {
["font-size"]=>
string(4) "12px"
["color"]=>
string(7) "#ff0000"
["font-family"]=>
string(5) "Arial"
}
关于php - PHP中 explode 两次的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355301/