PHPは、行が「!」で終わらない場合にのみ文字列を分解します

StackOverflow https://stackoverflow.com/questions/1223740

  •  11-07-2019
  •  | 
  •  

質問

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よりも簡単な解決策はありませんが、あると想像してください...!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top