1

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\!");');

行が ! で終わる場合 (! が \! としてエスケープされている場合を除く)、次の行を含むその行を 1 つの要素として配列に追加する必要があります。そう

&This is a comment !
on multiple !
lines.

になる

&This is a comment on multiple lines.

誰もこれを行う方法を知っていますか?

4

1 に答える 1

2

負の後読みで preg_split を使用できるはずです。

(私は例を見つけています)

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

コメントによると、これにより改行文字と ! 残る。現時点では、str_replace よりも簡単な解決策はありません。

于 2009-08-03T18:05:14.507 に答える