2016-04-14 23 views
-1

Bu özel desen, regex101 üzerinde test ettiğim gibi eşleşir, ancak kodumda değil.Çok satırlı regex PHP'de çalışır,

$text = "abc 
     %if_something% 
     <p>Content to potentially remove</p> 
     %endif_something% 
     123"; 

$regex = "/(?s)%if_something%.*%endif_something%/" 

preg_replace($regex, '', $text); 

Beklenen davranış döndürmektir:

/(?s)%if_something%.*%endif_something%/ 

söz konusu kod

.

"abc 
123" 

Sanıyorum regex101 bir PHP dize olarak aynı boşluk ve çizgi arabası kolu, ancak bu bile benim PHP dize herhangi boşluk çıkarmadan olmaz, hala bir maç alamadım.

+0

'abc \ n \ n123' – rock321987

+0

@ rock321987 şu anda

$text=preg_replace($regex, '', $text); 

Saygılar, Tüm dize – veksen

+1

bırakılırsa şunu kontrol edin: - http://ideone.com/PAIUJ6 – rock321987

cevap

2

Kodunuz düzgün çalışıyor. Ancak bazı sözdizimi sorunları vardır ve ayrıca döndürülen değeri

$text=preg_replace($regex, '', $text); 
^ 

kurtarmak olmadığını Fiddle

Çıktı

abc 

     123 

çünkü onlar olanlar boşluk vardır orada orijinal dizinizde ve bunları hiçbir şeyle değiştirmezsiniz.

1

Değiştirinizin sonucunu herhangi bir öğeye atamadığınız gibi görünür. Eğer $ metinde sonuna kadar wan't, bunun sonucu atamak için emin olun: kalanları