PHPは、行が「!」で終わらない場合にのみ文字列を分解します
質問
PHPのスクリプトプログラミング言語のパーサーを書いています。そのスクリプト言語の構文は次のようになります。
ZOMFG
&This is a comment
(show "Hello, World\!");
これはその言語で書かれたページで、Hello、World!を表示します。ブラウザで。ただし、次のようなコードを作成することもできます。
ZOMFG
&This is a comment !
on multiple !
lines.
(show !
"Hello, !
World\!!
");
今のところ、 explode(" \ n&quot ;, $ content)
を使用して、ページのコンテンツを、個別のインデックスにコードの各行がある配列に展開します。
だから
array('ZOMFG', '&This is a comment', '(show "Hello, World\!");');
なる:
&This is a comment !
on multiple !
lines.
行が!で終わる場合(!が\!としてエスケープされている場合を除く)、その行を追加し、次の行を1つの要素として配列に追加する必要があります。だから
&This is a comment on multiple lines.
なる
<*>これを行う方法を知っている人はいますか?
解決
否定的な後読みでpreg_splitを使用できるはずです。
(例が見つかりました)
$lines = preg_split('|(?<!\!)\n|', $code);
コメントごとに、これにより改行文字と!残る。現時点ではstr_replaceよりも簡単な解決策はありませんが、あると想像してください...!
所属していません StackOverflow