Heim > Web-Frontend > CSS-Tutorial > Wie extrahiere ich bestimmte CSS-Klassen mit PHP?

Wie extrahiere ich bestimmte CSS-Klassen mit PHP?

Susan Sarandon
Freigeben: 2024-11-15 09:24:02
Original
793 Leute haben es durchsucht

How to Extract Specific CSS Classes with PHP?

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
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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'];
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage