Bonsoir à tous,
je suis en train de faire un script qui permet de convertir un fichier css en tableau multi-dimentionnelle.
Le script fonctionne pas mal, mais effectue un opération en double
voici un extrait du fichier css qu'il doit convertir
html, body {
color: #053754;
background: url("./images/background.jpg") no-repeat center fixed;
-webkit-background-size: cover; /* pour anciens Chrome et Safari */
background-size: cover; /* version standardis�e */;
padding: 0;
}
a, table.table1 td, h3, dl.details dd, dl.details dd a, dl.faq a, .postprofile, ul.topiclist li, ul.topiclist li:hover, .content dl.faq, .content h2, .panel h2, dt label, dt span, .copyright {
color: #053754;
}
h3, .content h2, .panel h2 {
border-bottom-color: #053754;
}
et voilà ce qu'il retranscrit
[0]=>
array(2) {
["element"]=>
string(11) "html, body "
["rules"]=>
array(4) {
["color"]=>
string(8) " #053754"
["background"]=>
string(54) " url("./images/background.jpg") no-repeat center fixed"
["-webkit-background-size"]=>
string(6) " cover"
["padding"]=>
string(2) " 0"
}
}
[1]=>
array(2) {
["element"]=>
string(11) "html, body "
["rules"]=>
array(4) {
["color"]=>
string(8) " #053754"
["background"]=>
string(54) " url("./images/background.jpg") no-repeat center fixed"
["-webkit-background-size"]=>
string(6) " cover"
["padding"]=>
string(2) " 0"
}
}
[2]=>
array(2) {
["element"]=>
string(192) "
a, table.table1 td, h3, dl.details dd, dl.details dd a, dl.faq a, .postprofile, ul.topiclist li, ul.topiclist li:hover, .content dl.faq, .content h2, .panel h2, dt label, dt span, .copyright "
["rules"]=>
array(4) {
["color"]=>
string(8) " #053754"
["background"]=>
string(54) " url("./images/background.jpg") no-repeat center fixed"
["-webkit-background-size"]=>
string(6) " cover"
["padding"]=>
string(2) " 0"
}
}
[3]=>
array(2) {
["element"]=>
string(192) "
a, table.table1 td, h3, dl.details dd, dl.details dd a, dl.faq a, .postprofile, ul.topiclist li, ul.topiclist li:hover, .content dl.faq, .content h2, .panel h2, dt label, dt span, .copyright "
["rules"]=>
array(4) {
["color"]=>
string(8) " #053754"
["background"]=>
string(54) " url("./images/background.jpg") no-repeat center fixed"
["-webkit-background-size"]=>
string(6) " cover"
["padding"]=>
string(2) " 0"
}
}
[4]=>
array(2) {
["element"]=>
string(28) "
h3, .content h2, .panel h2 "
["rules"]=>
array(5) {
["color"]=>
string(8) " #053754"
["background"]=>
string(54) " url("./images/background.jpg") no-repeat center fixed"
["-webkit-background-size"]=>
string(6) " cover"
["padding"]=>
string(2) " 0"
["border-bottom-color"]=>
string(8) " #053754"
}
}
pour une raison qui m'est obscure il double les elements
auriez vous une idées de l'erreur que j'ai pu commaitre
//fonction qui parcoure la variable css et la convertit en tableaux multidimentionnel
function Css_Decode($css)
{
$result = explode('}', $css);
foreach ($result as $key => $info) {
//echo $i++;
$info = explode('{', $info);
//$rules = array();
foreach ($info as $value) {
$rule = explode(';', $info[1]);
foreach ($rule as $item) {
$element = explode(':', $item);
if ($element[1] != null) {
$rules[trim($element[0])] = $element[1];
}
unset($value);
}
$to_css[] = array(
'element' => $info[0],
'rules' => $rules
);
unset($item);
}
}
return $to_css;
}
function Clean_CSS($css)
{
$css = preg_replace("/(\/\*)(.*?)(\*\/\;)(.)/sm", "$4", $css);
return preg_replace("/(\/\*)(.*?)(\*\/)(.)/sm", "$4", $css);
}
$file_name = "./forum/styles/".$user->style['style_path']."/theme/stylesheet.css";
$fp = file($file_name);
//var_dump($fp);
foreach ($fp as $key => $line)
{
$css_origine=$css_origine."".$line;
}
$clean_css=Clean_CSS($css_origine);
$data=Css_Decode($clean_css)
merci d'avance flo