如果我有这样的CSS:
.featured .featured_1 {
background-image: url("http://test.com/image.png");
margin-top:20px;
}
然后这个PHP函数:
function makeArrayOfBackroundImages($css) {
if (!preg_match_all('/\.([a-z\d_]+)\s*\{[^{}]*url\("?([^()]+)"?\)?/i', $css, $arr)) return array();
return array_combine($arr[1], $arr[2]);
}
创建一个类名称数组作为键,背景图像作为url。
feature => http://test.com/image.png
如何修改正则表达式和此函数,使其匹配两个类名。在这个例子中有两个类,但是类的数量是可变的,并且将是一个或多个,所以我需要匹配所有类名,具体取决于它们的数量。例如,我想创建一个这样的数组,因此两个类名都列为键,背景图像url作为两个键的值。忽略类中的任何其他css属性。
feature => http://test.com/image.png
featured_1 => http://test.com/image.png
答案 0 :(得分:0)
如何修改正则表达式和此函数以使其匹配类名?
取决于。
总是会遇到一两个匹配的情况吗?会不会有三个,四个或五个?
如果它只是两个,你可以简单地重复第一个捕获组:
\.([a-z\d_]+)\s*(?:\.([a-z\d_]+)\s*)?\{[^{}]*url\("?([^()]+)"?\)?