2016-03-26 14 views
1

Ich habe eine CSS-Datei für meine benutzerdefinierten Symbole, und ich möchte Klassennamen und Inhaltswert aus ihnen extrahieren.Wie extrahiere ich einen Icon-Klassennamen und seinen Inhaltswert aus einer CSS-Datei mit PHP?

Die CSS-Datei hat meistens Zeilen wie diese:

.my-icon-bus:before { content: '\e820'; } /* '' */ 
.my-icon-tools:before { content: '\e821'; } /* '' */ 
.my-icon-science:before { content: '\e822'; } /* '' */ 
.my-icon-quotes:before { content: '\e823'; } /* '' */ 
.my-icon-printer:before { content: '\e827'; } /* '' */ 

ich das RegexMuster versuchte unten in regex101.com und es funktioniert gut - sieht es here arbeiten, die Klassennamen und dessen Inhalt Code zurückkehrt, aber Wenn ich versuche, dasselbe mit preg zu tun, benutze preg_match_all, es passt zu nichts.

Hier ist meine PHP-Code, hoffentlich einer von euch RegEx Gurus da draußen kann mir helfen, dies herauszufinden.

$css = file_get_contents('/path/to/my/css/file/my-icon.css'); 

preg_match_all('/\.(my-icon-\w+):before\s*{\s*content:\s*(["\']\\\w+["\']);/s', $css, $matches); 
var_dump($matches); 

Falls jemand sich fragt, hat die Variable $ css den Inhalt der CSS-Datei.

Vielen Dank im Voraus für jede Hilfe, die Sie zur Verfügung stellen können.

Antwort

1
/\\.(my-icon-\\w+):before\\s*{\\s*content:\\s*([\"']\\\\\\w+[\"']);/s 

Hinweis Anfang Zeichenfolge /\\. (Doppelbackslash) und es funktioniert gut.

+0

Eigentlich hat es nicht funktioniert aber es zeigte mir in die richtige Richtung - was bedeutet, nach einigem Backslash Hinzufügen und Entfernen habe ich es endlich zur Arbeit gebracht, es endete wie folgt:/\. (My-icon - [- \ w] +): vor \ s * {\ s * content: \ s * (["'] \\\\\ w + ["']);/s - aus irgendeinem Grund musste ich fünf Backslashes für den Inhalt verwenden Code ... Danke, GR Vitally – andrux

+0

Eigentlich gibt es Code-Generator bei regex101.com, und wenn es dort funktioniert, sollte es an Ihrer Seite arbeiten. Ich habe darauf hingewiesen, dass am Anfang Doppelstrich, wie Sie aus Schnipsel sehen können, gibt es viel mehr Backslashes ... –

Verwandte Themen