Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Kampf gegen reguläre Ausdrücke: Passende CSS-Stile

PHP-Kampf gegen reguläre Ausdrücke: Passende CSS-Stile

王林
王林Original
2023-06-22 18:31:40937Durchsuche

In der Webentwicklung sind CSS-Stylesheets ein integraler Bestandteil, mit denen sich HTML-Elemente bequem formatieren lassen. Manchmal müssen wir jedoch bestimmte Stile aus einer großen CSS-Datei extrahieren und können dann die Funktion für reguläre Ausdrücke von PHP zum Abgleich verwenden. In diesem Artikel wird erläutert, wie Sie reguläre PHP-Ausdrücke verwenden, um CSS-Stile in der Praxis anzupassen.

Werfen wir zunächst einen Blick auf die Grundstruktur von CSS-Stilen:

selector {
    property: value;
    property: value;
}

Ein grundlegender CSS-Stil besteht aus einem Selektor und einer Reihe von Attribut-Wert-Paaren. Der Selektor gibt das HTML-Element an, auf das der Stil angewendet werden soll, und das Attribut-Wert-Paar ist die spezifische Stileinstellung. In CSS werden Attribute und Werte durch einen Doppelpunkt „:“ getrennt, und jedes Attribut-Wert-Paar wird durch ein Semikolon „;“ getrennt.

Als nächstes veranschaulichen wir anhand eines Beispiels, wie man reguläre PHP-Ausdrücke verwendet, um CSS-Stile anzupassen.

Angenommen, wir haben eine CSS-Datei (style.css), die die folgenden Stile enthält:

h1 {
    font-size: 24px;
    font-family: Arial, sans-serif;
    color: #333;
}

p {
    font-size: 16px;
    font-family: Helvetica, Arial, sans-serif;
    line-height: 1.4;
    color: #666;
}

.btn {
    display: inline-block;
    padding: 10px 20px;
    border: none;
    border-radius: 4px;
    font-size: 16px;
    font-weight: bold;
    text-transform: uppercase;
    background-color: #f00;
    color: #fff;
}

Jetzt müssen wir alle Stile der Kategorie „.btn“ aus dieser Datei extrahieren. Sie können die Funktion file_get_contents von PHP verwenden, um den gesamten Dateiinhalt zu lesen, und dann die Funktion preg_match_all zum Abgleichen verwenden.

// 读取样式文件内容
$css = file_get_contents('style.css');

// 匹配样式
$pattern = '/.btns*{([^}]+)}/';
preg_match_all($pattern, $css, $matches);

// 输出匹配结果
print_r($matches[0]);

Im obigen Code verwenden Sie zunächst die Funktion file_get_contents, um den Inhalt der Stildatei zu lesen und den Inhalt in der Variablen $css zu speichern. Verwenden Sie dann die Funktion preg_match_all, um den Stil abzugleichen, und der konstruierte reguläre Ausdruck lautet „.btns*{(1+)}“:

  • .btn“ entspricht dem Selektor der Kategorie „.btn“. ;
  • "s*" entspricht 0 oder mehr Leerzeichen;
  • "{(1+)}" entspricht einer Reihe von Attribut-Wert-Paaren in geschweiften Klammern, wobei „1+“ bedeutet Passen Sie jedes Zeichen außer der rechten geschweiften Klammer „}“ an und fügen Sie die Klammer „()“ hinzu, um das Übereinstimmungsergebnis im Array $matches zu speichern.

Zum Schluss werden die passenden Ergebnisse ausgegeben.

Führen Sie den obigen Code aus und die Ergebnisse sind wie folgt:

Array
(
    [0] => .btn {
    display: inline-block;
    padding: 10px 20px;
    border: none;
    border-radius: 4px;
    font-size: 16px;
    font-weight: bold;
    text-transform: uppercase;
    background-color: #f00;
    color: #fff;
}
)

Wie aus den Ergebnissen ersichtlich ist, hat der reguläre Ausdruck erfolgreich den Stil der Kategorie „.btn“ abgeglichen und den gesamten Stilblock zurückgegeben.

Natürlich können wir die Attribut-Wert-Paare auch weiter extrahieren.

// 读取样式文件内容
$css = file_get_contents('style.css');

// 匹配样式
$pattern = '/.btns*{([^}]+)}/';
preg_match_all($pattern, $css, $matches);

// 提取属性-值对
$pattern = '/([a-z-]+)s*:s*([^;]+);/';
foreach ($matches[1] as $block) {
    preg_match_all($pattern, $block, $props);
    print_r($props);
}

Im obigen Code verwenden wir einen anderen regulären Ausdruck „([a-z-]+)s:s(2+);“, um Attribut-Wert-Paare abzugleichen:

  • “( [a-z -]+)“ entspricht dem Attributnamen, wobei „[a-z-]+“ bedeutet, dass eine Zeichenfolge gefunden wird, die aus Kleinbuchstaben und einem Bindestrich „-“ besteht, und das Hinzufügen von Klammern „()“ bedeutet, dass das übereinstimmende Ergebnis im $props-Array gespeichert wird Im ersten Element entspricht
  • „s:s“ dem Doppelpunkt „:“ zwischen dem Attributnamen und dem Attributwert, der 0 oder mehr Leerzeichen enthalten kann; stimmt mit dem Attributwert überein, wobei „
  • 2+“ bedeutet, dass mit jedem Zeichen außer dem Semikolon „;“ übereinstimmt, und das Hinzufügen von Klammern „()“ bedeutet, dass das Übereinstimmungsergebnis im zweiten Element des Array-Elements $props gespeichert wird; Das letzte Semikolon „;“ wird verwendet, um die schließende Klammer „}“ am Ende des Stilblocks zu ignorieren. Hier verwenden wir eine foreach-Schleife, um alle Stilblöcke zu durchlaufen, die Attribut-Wert-Paare jedes Stilblocks zu extrahieren und die Ergebnisse auszugeben.
  • Führen Sie den obigen Code aus, die Ergebnisse sind wie folgt:
  • Array
    (
        [0] => Array
            (
                [0] => display: inline-block;
                [1] => padding: 10px 20px;
                [2] => border: none;
                [3] => border-radius: 4px;
                [4] => font-size: 16px;
                [5] => font-weight: bold;
                [6] => text-transform: uppercase;
                [7] => background-color: #f00;
                [8] => color: #fff;
            )
    
        [1] => Array
            (
                [0] => display
                [1] => padding
                [2] => border
                [3] => border-radius
                [4] => font-size
                [5] => font-weight
                [6] => text-transform
                [7] => background-color
                [8] => color
            )
    
        [2] => Array
            (
                [0] => inline-block
                [1] => 10px 20px
                [2] => none
                [3] => 4px
                [4] => 16px
                [5] => bold
                [6] => uppercase
                [7] => #f00
                [8] => #fff
            )
    
    )
  • Wie aus den Ergebnissen ersichtlich ist, haben wir die Attribut-Wert-Paare erfolgreich im Stil der Kategorie „.btn“ extrahiert und die Ergebnisse entsprechend in $ gespeichert auf den Attributnamen und den Attributwert im ersten und zweiten Element des Requisiten-Arrays.

Durch das obige Beispiel haben wir gelernt, wie man reguläre PHP-Ausdrücke verwendet, um CSS-Stile anzupassen. Ich glaube, dass jeder die grundlegenden Fähigkeiten zum Erstellen regulärer Ausdrücke sowie zum Durchführen von Stilvergleichen und Attributextraktionen beherrscht. In der tatsächlichen Entwicklung können wir je nach Bedarf auch komplexere Matching- und Extraktionsvorgänge durchführen, um den Anforderungen der Verarbeitung unterschiedlicher Stile gerecht zu werden.

}


;

Das obige ist der detaillierte Inhalt vonPHP-Kampf gegen reguläre Ausdrücke: Passende CSS-Stile. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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