4

I retrieve with PHP a css file in my database.

So i have : $mycss = "SOME CSS SOME CSS SOME CSS"

In this $mycss, i can have :

div.coul01,.red,.coul01{
    color:#663333;
}
div.coul02,.blue,.coul02{
    color:#3366CC;
}

For this example, i need to retrive in PHP, for each instruction that begins with div. the second element, here "red" and "blue".

Do you have any ideas ? Thanks !

4

3 回答 3

1

如果您真的不想使用任何库并想坚持使用正则表达式,这对您有用:

<?php
$mycss = "body,div.coul01,.white,.coul01{
    color:#000000;
}
div.coul01,.red,.coul01{
    color:#663333;
}
div.coul02,.blue,.coul02{
    color:#3366CC;
}
div.coul02,.grey,.coul02{
    color:#C0C0C0;
}";
preg_match_all("/^div\.[^,{]*,[\.#](\w+)/ms", $mycss, $matches, PREG_PATTERN_ORDER, 0);
?>

然后在你的$matches变量中你会有这样的东西:

$matches[0][0]  div.coul01,.red
$matches[0][1]  div.coul02,.blue
$matches[0][2]  div.coul02,.grey
$matches[1][0]  red
$matches[1][1]  blue
$matches[1][2]  grey

$matches[1]是你要找的

例子

于 2013-01-25T10:23:23.660 回答
0

您可以使用explode()逗号作为分隔符,但更优雅的解决方案是使用 PHP CSS 解析器,例如https://github.com/sabberworm/PHP-CSS-Parser

它更灵活。

于 2013-01-25T10:20:02.573 回答
0

我建议使用诸如Sabberworm 之类的 CSS 解析器。你也可以试试这个库,我看过一些人推荐的。您可能还想查看一个名为HTML_CSS的 PEAR 包。请注意,它目前没有被维护。就个人而言,我会远离为这种事情编写自定义正则表达式,仅仅是因为我见过像这样的项目“起飞”并导致随着项目扩展而难以维护的混乱的正则表达式代码并添加了更多功能。前一分钟你想要所有以 div 开头的东西,下一分钟你想要控制 h1、span 和 p 样式。

于 2013-01-25T10:20:11.533 回答