Skip to content
Advertisement

Parse inline CSS values with Regex?

I have such an inline CSS like this

color:#777;font-size:16px;font-weight:bold;left:214px;position:relative;top:70px

The CSS may end with a semicolon “;” or not. It also can contain extra space between its values. I’m about using “explode” function to parse the CSS into an array, something like :

Array(
“color” => “#777”,
“font-size” => “16px”,
“font-weight” => “bold”,

and so on.

Can anybody suggest me a way to use regular expression to complete this task?

Advertisement

Answer

Another way, using a regex:

$css = "color:#777;font-size:16px;font-weight:bold;left:214px;position:relative;top:   70px";

$results = array();
preg_match_all("/([w-]+)s*:s*([^;]+)s*;?/", $css, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
  $results[$match[1]] = $match[2];
}

print_r($results);

Outputs:

Array
(
    [color] => #777
    [font-size] => 16px
    [font-weight] => bold
    [left] => 214px
    [position] => relative
    [top] => 70px
)
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement