Satır ile bitmiyor, sadece PHP dize patlayabilir! '

1 Cevap php

PHP bir betik programlama dili için bir ayrıştırıcı yazıyorum. Bu betik dili sözdizimi şu şekildedir:

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

Bu görüntüler Merhaba, bu dil, Dünyada yazılmış bir sayfası! tarayıcıda. Ama ben de bu gibi bir kod olabilir:

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

For now I use explode("\n", $content) to explode the page's content to an array which has each line of code in a separate index. So

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

olur:

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

Bir satır ile sona erdiğinde! (! \! Olarak kaçtığı zaman hariç), bu tek bir eleman olarak diziye aşağıdaki satırı da dahil olmak üzere, bu hat eklemek gerekir. Bu yüzden

&This is a comment !
on multiple !
lines.

olur

&This is a comment on multiple lines.

Herkes bunu biliyor mu?

1 Cevap

Eğer bir negatif Geriye bakan ile preg_split kullanmak gerekir.

(Ben bir örnek buluyorum)

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

Bu satır karakterleri ve! Hem de neden olduğunu yorumlarla başı olarak, farkında kalması. ... Ama orada bir hayal - Şu anda str_replace daha bu daha kolay bir çözüm göremiyorum!