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

SabberwormなどのCSSパーサーを使用することをお勧めします。このライブラリを試すこともできます。これは、数人の人がお勧めしているのを見たことがあります。HTML_CSSと呼ばれるPEARパッケージもあります。現在、メンテナンスされていないことに注意してください。個人的には、この種のカスタム正規表現を作成することは避けたいと思います。これは、このような「翼を引き継ぐ」ようなプロジェクトを見て、プロジェクトが拡大するにつれて維持するのが難しい厄介な正規表現につながるからです。さらに多くの機能が追加されます。1分間は、divで始まるすべてのものが必要であり、次は、h1、span、およびpスタイルを制御する必要があります。

于 2013-01-25T10:20:11.533 に答える
0

区切り文字としてコンマを使用することもできますexplode()が、より洗練された解決策は、https://github.com/sabberworm/PHP-CSS-ParserなどのPHPCSSパーサーを使用することです。

より柔軟です。

于 2013-01-25T10:20:02.573 に答える