如何从php中的字符串中获取冒号分隔值

时间:2013-03-28 18:00:47

标签: php regex preg-match-all

我有一个字符串

$style = "font-color:#000;font-weight:bold;background-color:#fff";

我只需要

font-color
font-weight
background-color

我试过了

preg_match_all('/(?<names>[a-z\-]+:)/', $style, $matches);

var_dump($matches);

它为我提供了以下输出

array
  0 => 
    array
      0 => string 'font-color:' (length=11)
      1 => string 'font-weight:' (length=12)
      2 => string 'background-color:' (length=17)
  'names' => 
    array
      0 => string 'font-color:' (length=11)
      1 => string 'font-weight:' (length=12)
      2 => string 'background-color:' (length=17)
  1 => 
    array
      0 => string 'font-color:' (length=11)
      1 => string 'font-weight:' (length=12)
      2 => string 'background-color:' (length=17)

此输出有三个问题 它是二维或三维数组,我需要一维数组。 它正在重复这些信息 3.它在每个元素的末尾添加“:”。

我需要像这样的单个数组

array
0 => 'font-color'
1 => 'font-weight'
2 => 'background-color'

1 个答案:

答案 0 :(得分:2)

取出冒号:

$style = "font-color:#000;font-weight:bold;background-color:#fff";
preg_match_all('/(?<names>[a-z\-]+):/', $style, $matches);

var_dump($matches['names']);

然后使用$matches['names'],因为你命名它,所以你没有多余的信息