2016-11-27 4 views
0

Ich bin ein bisschen ratlos. Der unter Regex funktioniert wie erwartet:Regex nicht schließen span

$src_data = preg_replace("/&quot;(.+?)&quot;/", "<span class=\"src_att\">$0</span>", $src_data); 
$src_data = preg_replace("/'(.+?)'/", "<span class=\"src_att\">$0</span>", $src_data); 

schlägt jedoch fehl, dies die Spanne zu schließen:

$src_data = preg_replace("/\/\/(.+?)\n/", "<span class=\"src_com\">$0</span>", $src_data); 

Sicher genug ist es etwas Trivia aber ich kann nicht den Fehler zu sehen. Jede Hilfe geschätzt, danke.

EDIT:

$ src_data alles sein kann, z.B. eine einzelne Zeile oder mehrere Zeilen. Das unten ist ein Beispiel mit einfachen Anführungszeichen - awhich wie erwartet funktioniert:

$ds_type = array ('Bytes', 'KiB', 'MiB', 'GiB', 'TiB'); 

Wenn auch nicht einen Kommentar entsprechen versuchen, die Schließung Spanne hinzuzufügen:

//** this is just a comment 

Der Ausgang ist renderd in Ordnung, aber offensichtlich Der Aufschlag ist aufgrund der fehlenden Spanne ungültig.

+2

Können Sie einige Beispiele von $ src_data hinzufügen – Danijel

+0

Die '' wird in der nächsten Zeile sein, da die neue Zeile am Ende von $ 0 steht. – Barmar

+0

Vielleicht sollten Sie '$' anstelle von '\ n' verwenden, zusammen mit der Option' m', die dafür sorgt, dass das Ende der Zeile und nicht das Ende der Zeichenfolge übereinstimmt. – Barmar

Antwort

0

Hassen Sie das tun, aber da es behoben ist werde ich mich selbst beantworten.

$src_data = preg_replace("/\/\/(.*?)$/m", "<span class=\"src_com\">$0</span>", $src_data); 

Ändern .*+?-.*? in Verbindung mit $/m war alles dauerte es. Habe ich Trivialitäten erwähnt ... Danke überall.