Also schreibe ich ein PHP-Skript, das in einer CSS-Datei liest, dann die Kommentare und tatsächlichen CSS in separaten Arrays. Das Skript erstellt dann eine Seite mit CSS und Kommentaren, die alle gut formatiert sind.Testen für einen Backslash in einer Zeichenfolge
Die grundlegende Logik für das Skript ist dies:
- liest in einer neuen Zeile
- Wenn es mit einem Schrägstrich beginnt oder endet mit einem Öffnungswinkel, setzte einen Bool für CSS oder Kommentare true
- diese Zeile an die entsprechende Element in dem entsprechenden Array in
- Wenn das letzte Zeichen einer umgekehrten Schrägstrich (Ende eines Kommentars) oder die ersteistCharakter ist ein Schließbügel (Ende eines CSS-Tag), stellen notwendig Bool falsch
- Spülen, wiederholen
Wenn jemand einen Fehler in das sieht, fühlen sich frei, es zu zeigen, aber ich denke, es sollte tun, was ich will.
Der schwierige Teil ist die letzte if-Anweisung, die überprüft, ob das letzte Zeichen ein umgekehrter Schrägstrich ist. Jetzt habe ich:
if ($line{(strlen($line) - 3)} == "\\") {do stuff}
wo $ Zeile ist die letzte Zeile aus der Datei eingelesen. Ich bin mir nicht ganz sicher, warum ich 3 Zeichen zurückgeben muss, aber ich vermute, dass es am Ende jeder Zeichenfolge eine neue Zeile gibt, wenn man sie aus einer Datei einliest. Diese if-Anweisung ist jedoch niemals wahr, obwohl es definitiv Zeilen gibt, die mit Schrägstrichen enden. Diese
gibt sogar einen Backslash zurück, aber die if-Anweisung wird nie ausgelöst.
Haben Sie versucht, der neuen Zeile vor der Schleife ein paar Zeichen hinzuzufügen? – Adam
Können Sie näher erläutern, was Sie meinen? Ich habe $ line überprüft, und es enthält definitiv eine Zeichenfolge, wenn es getestet wird. – mcritelli
Sie können "\ r \ n", "\ r" oder "\ n" Zeilenenden haben. – aib