我正在写在PHP脚本编程语言解析器。该脚本语言的语法如下:

ZOMFG
&This is a comment
(show "Hello, World\!");

这是该语言编写的一个网页,显示的Hello,World!在浏览器中。但我也能有这样的代码:

ZOMFG
&This is a comment !
on multiple !
lines.
(show !
"Hello, !
World\!!
");

有关现在我用explode("\n", $content)到网页的内容爆炸到具有在单独的索引的代码的每一行的阵列。 所以

ZOMFG
&This is a comment
(show "Hello, World\!");

变为:

array('ZOMFG', '&This is a comment', '(show "Hello, World\!");');

当一行以结束! (除了当!转义为\!),但应该补充的是线,包括以下行到阵列作为一个单独的元件。所以

&This is a comment !
on multiple !
lines.

变为

&This is a comment on multiple lines.

有谁知道如何做到这一点?

有帮助吗?

解决方案

你应该能够以负回顾后使用使preg_split。

(我发现一个例子)

$lines = preg_split('|(?<!\!)\n|', $code);

按照意见,请注意,这会导致两个换行符和!保持。无法看到,在这段时间str_replace函数更容易地解决了这个 - !不过想有一个...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top