2008-10-27 17 views
7

tüm çapa maç ve yazdığım ilk düzenli ifadeyi kadar açma edilir. Bu, preg_replace() kullanarak, PHP4'tür. URI'yi ve bağlantılı metni yakalarım.düzenli ifadeler - Ben arka ucunda bir wysiwyg editörü var İsteğe bağlı ayrıntıların

@<a\shref=\"http[s]?://([^\"]*)\"[]>(.*)<\/a>@siU 

istemcisi, yeni bir pencerede açmak için tüm harici linkler istediğini tüm (umarım) dış bağlantıları bulabilirsiniz, ancak iç sayfa bağlantıları çapa bırakmak kullanıyordum ifadesi, vb

Ben yüzden kullanıcı bağlantıya kalın seçerse wysiwyg editörü de style="font-weight: bold" ekler fark etti. Bu sorun hakkında gitmek nasıl emin değilim bu yüzden sadece son zamanlarda normal ifadeler öğrenme başladım.

bunu nasıl yapardın?

cevap

7

bu tamam onu ​​uymalıdır:

/<a\s+([^>]*)href="https?:\/\/([^"]*)"(.*?)>(.*?)<\/a>/ 

burada faydalı şey tembel bir eştir. *? buna kesinlikle ihtiyacı olarak açgözlü düzenli maçında, aksine o, sadece kadar maç anlamına gelir.

bu metinle, göstermek için:

/a.*c/ selects: "a b c d a b c" 
/a.*?c/ selects: "a b c" 
:

a b c d a b c d

bu regexes farklı sonuçlar olacaktır