Ich schreibe einen Parser für eine Skriptsprache in PHP. Die Syntax dieser Skriptsprache sieht folgendermaßen aus:PHP explodiert String nur, wenn Zeile nicht mit '!' Endet
ZOMFG
&This is a comment
(show "Hello, World\!");
Dies ist eine Seite in dieser Sprache, die Hello, World! im Browser. Aber ich kann auch Code wie diese:
ZOMFG
&This is a comment !
on multiple !
lines.
(show !
"Hello, !
World\!!
");
Vorerst ich explode("\n", $content)
verwende der Inhalt der Seite zu einem Array zu explodieren, das jede Codezeile in einem separaten Index hat. So
ZOMFG
&This is a comment
(show "Hello, World\!");
wird:
array('ZOMFG', '&This is a comment', '(show "Hello, World\!");');
Wenn eine Zeile mit einem Ende! (außer wenn das! als \! maskiert ist), sollte diese Zeile einschließlich der folgenden Zeile als ein einzelnes Element zum Array hinzugefügt werden. So
&This is a comment !
on multiple !
lines.
wird
&This is a comment on multiple lines.
Wer weiß, wie dies zu tun?
nette Idee, aber das hätte nicht den Effekt, die! \ N Kombination aus den verbundenen Linien zu strippen. –
Danke Mann, der funktioniert hat. Ein Problem: das! bleibt in der Mitte der Linie. Kann jemand das reparieren? –
str_replace ('\!', "!", $ Line); –