php - PHP中 explode 两次的更好方法

标签 php arrays string performance explode

给定:

$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/

相关文章:

php - 如何在下拉菜单中的子菜单中鼠标悬停时保持父菜单悬停

c - 将变量数组传递给 C 中的函数

C++ - 字符数组以某种方式初始化为错误的大小

string - 组合多个 unicode 字符

php - 在没有root CentOS的情况下编译geos

javascript - jQuery 函数在存在多个目标时停止工作,但在只有一个目标时工作

php - 初始化然后增加记录集的行号,如果

javascript - 通过 Jquery AJAX 从复选框 POST 数组

javascript - 如果前四个字符是数字,则在字符串中插入字符

java - 如何替换序列中的非 ASCII 字符?