2011-09-23 22 views
16

PHP'de düzenli bir ifade ile çalışıyorum. Aşağıdaki dize sahibim:PHP'de normal ifadeyi kullanarak boşluk, satır başı ve satır besleme nasıl eşleştirilir?

Bu dize satır başı ve satır besleme karakterlerini içerir.

Düzenli ifademin, html img etiketlerini IMG ile değiştirmesini istiyorum ancak bu, yukarıdaki metinle çalışmaz.

Bu karakterleri, dizedeki her karakterin içinden geçerek ve burada bulunan (http://pastebin.com/ViNdBsRV) onaltılık gösterimi basarak içerdiğini keşfettim.

strip_tags(preg_replace('/^\s*<img\s*.*\/?>\s*$/i', '[IMG]', $test)); 

yardım için teşekkür ederiz:

İşte benim düzenli ifadedir. Yeni satırlarla eşleşecek

+0

sen dize başlangıç ​​dizesinden bekliyorsunuz bana göster lütfen? –

cevap

5

Bu ekleyin: Ben normal bir ifade yapıyorum Şahsen zaman

preg_replace("#<img.+?/>#is", '[IMG]', $test) 

Hep en basit/kısa gitmeye çalışın. Burada '<img' ile başlayan ve '/>', '.+?' ile biten tüm etiketin yerine bir açgözlü (tembel) yakalamadır. Ve '' ve 's' için değiştiriciler için . için yeni bir satır olma olasılığı. lazyness vs greedyness üzerinde

Daha: değiştiricileri üzerinde http://www.regular-expressions.info/repeat.html
Daha: birden çok boşluk ve multilines, ayrıca başka herhangi bir karakter veya simge ile eşleşen Bu benim için çalıştı http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

+0

Bu, beklendiği gibi çalışır, kapsamlı açıklama için teşekkürler. Ben biraz diğer durumlarda uygun tweaked çok:/ \ s * $/Sen '\ s eklemek gerekmez @Sid – Sid

+0

olduğunu $' benim çözüm zaten bu nasıl (bir bütün sayfadaki '' değiştirmeye çalışan Regex'i test ettim). – 3on

+0

$ ekledim çünkü bir veritabanı tablosundan html dizesini alıyorum. '/> ' – Sid

43

[\n\r]+. Beyaz alanlar [\n\r\s]+

+0

Bunu normal ifademe ekledim, ancak çalışmıyor; '/^\ s * \ s * $/i' – Sid

+6

\ r \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ 'n \ n \ n \ n \ n \ n \ n \ n \ n \ n \' n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n yok \ n \ n \ n \ n \ n \ n \ n? –

+1

@ Col.Shrapnel: yes – salathe

2

.

[\S+\n\r\s]+ 

Bu yardımcı olur umarım herkese.

Bu örneğin maçları:

stpd : asdfasdf 
this is also matching *** 
+4

puttting bir' + 'içeride' [] 'bir edebi artı maç yapar temelde herhangi bir karakter eşleşen ediyoruz böylece' \ s' \ s' 'tersi şöyledir: – bradlis7

İlgili konular