PHP RegEx uzantısı - = * Sadece url şerit nasıl?

2 Cevap php

Ben BBCode etiketleri dışarı atmak için normal bir ifade yazdım - sadece (daha sonra etiketleri olmadan dize uzunluğunu sayma için) izin verilen etiketleri şeritler.

Düzenli ifadeler gelince ben bir uzman değilim - bir saat kadar sonra ben bu hoş çok çalışma bulundu:

$pattern = "/\[\/?(i|b|u|url(.*?)|list|li)[\]\[]*\]/i";
$stripped = preg_replace($pattern, '', $text);

Ve 'url = http://someurl' gibi uzatılabilir özel etiket 'url' - Sadece izin verilen altı etiketleri (olması gerektiği ve daha fazla) şeritler.

Yani

in:  [url=someurl]Lorem[/url] ipsum [test]dolor[/test] sit [b]amet[/b].
out: Lorem ipsum [test]dolor[/test] sit amet.

But the problem is, that it doesn't just strip out 'url=[sometext]' but also 'urlipsum'. I tried to add an '=' for parsing but couldn't get to the point.

Herkes nasıl = ile geldiğinde sadece url dışarı atmak için benim için bir ipucu var mı?

2 Cevap

Deneyin:

$pattern = '/\[\/?(i|b|u|url(=[^\]]+)?|list|li)[\]\[]*\]/i';

Siz "U" model değiştirici eklemeyi deneyin veya soru işareti kaldırın, nicelik ve "Açgözlülüğünü" değiştirmek isteyebilirsiniz. "*?" PHP doc bkz.