正则表达式从CSS中提取类似Sass的键/变量对 - php

Vin*_*nyD 0 php regex sass

如何在php中提取类似sass变量的键值对?

$blue: #3bbfce;
$margin:16px;
Run Code Online (Sandbox Code Playgroud)

结果应如下所示:

array('blue' => '#3bbfce', 'margin' => '16px'); 
Run Code Online (Sandbox Code Playgroud)

其次,如何删除(剥离)css样式表中的所有/任何变量声明?

Lus*_*ian 5

<?php
$subject = '$blue: #3bbfce; \n $margin:16px;';
$pattern = '/\$(.*?):(.*?);/';

preg_match_all($pattern, $subject, $matches);
$variableArray = array_combine( $matches[1], $matches[2] );
array_map( function($val) { return ltrim($val); }, $variableArray );
print_r($variableArray);
Run Code Online (Sandbox Code Playgroud)

这将为您找到您正在寻找的结果.要摆脱所有这些定义,只需使用preg_replace相同的主题$pattern.基本上,这个正则表达式所说的是

  • 找到任何以$开头的东西......
    • 接下来是一组任意字符,然后是一个冒号和另一个任意字符集,后跟一个分号.

您可能希望使用类似的字符类来优化此模式,这样您就不会匹配变量$this is not a valid variable: name.