CSS mit PHP für die selektive Klassenextraktion analysieren
In diesem Artikel wollen wir uns mit der Herausforderung befassen, eine CSS-Datei zu analysieren und bestimmte zu extrahieren Klassennamen, die eine vordefinierte Zeichenfolge enthalten. Wir suchen eine Lösung in PHP, die diese Aufgabe effektiv bewältigt.
Problemstellung:
Wir möchten eine CSS-Datei analysieren und alle Klassennamen identifizieren, die „postclass“ enthalten ihre Namen. Die gewünschte Ausgabe ist ein Array dieser Klassennamen, wie unten dargestellt:
arrayentry1: #content.postclass-subcontent arrayentry2: #content2.postclass-subcontent2
Ansatz mit regulären Ausdrücken:
Ein gängiger Ansatz zum Parsen von CSS ist die Verwendung regulärer Ausdrücke . Für diese spezielle Anforderung sind reguläre Ausdrücke jedoch möglicherweise nicht die geeignetste Option. Das bereitgestellte Beispiel-CSS enthält mehrere Selektoren mit komplexer Struktur, was es schwierig macht, die gewünschten Klassennamen allein mit regulären Ausdrücken genau zu extrahieren.
PHP-basierte Lösung:
Stattdessen Statt sich ausschließlich auf reguläre Ausdrücke zu verlassen, stellen wir eine PHP-basierte Lösung vor, die das Parsen vereinfacht Prozess:
function parse($file){ $css = file_get_contents($file); preg_match_all( '/(?ims)([a-z0-9\s\.\:#_\-@,]+)\{([^\}]*)\}/', $css, $arr); $result = array(); foreach ($arr[0] as $i => $x){ $selector = trim($arr[1][$i]); $rules = explode(';', trim($arr[2][$i])); $rules_arr = array(); foreach ($rules as $strRule){ if (!empty($strRule)){ $rule = explode(":", $strRule); $rules_arr[trim($rule[0])] = trim($rule[1]); } } $selectors = explode(',', trim($selector)); foreach ($selectors as $strSel){ $result[$strSel] = $rules_arr; } } return $result; }
Verwendung:
Um diese Lösung zu nutzen, rufen Sie den Inhalt der CSS-Datei in eine Variable ab. Rufen Sie dann die Funktion parse() mit dem Dateiinhalt als Argument auf. Diese Funktion gibt ein Array zurück, das die gewünschten Klassennamen als Schlüssel und ihre Regeln als Werte enthält. Zum Beispiel:
$css = parse('css/'.$user['blog'].'.php'); $css['#selector']['color'];
Dieser Ansatz ermöglicht ein dynamischeres und gezielteres Parsen von CSS-Dateien und macht es so flexibel für verschiedene Parsing-Anforderungen.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich bestimmte CSS-Klassen mit PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!