Benim blog yazısı foregin bağlantıları filtrelemek istiyorum, benle bazı bir yardım düzenli ifadeler?

4 Cevap php

Ben gibi blog veri var:

This is foreign <a href="xyz.com">link</a>, this is my site's <a href="mysite.com">link</a> and so on.

Ne istiyorum yapmaktır yabancı sitelerde, yani "<a href="xyz.com">link</a>" arasında bağlantıları filtre olduğunu. Benim son çıkış böylece:

This is foreign link, this is my site's <a href="mysite.com">link</a> and so on.

Ben "preg_replace" denedim ama hayır desen yardımcı oldu.

4 Cevap

Bu düzenli ifadelerle yapılmamalıdır.

DOM ayrıştırıcı gibi bir şey deneyin.

I don't know if you're using PHP, but this one very easy to use:
http://simplehtmldom.sourceforge.net/

Umarım bu yardımcı olur.

Her şeyden önce, ben zaten regex HTML için doğru aracı olmadığını söylediğim kişilerle anlaşmak zorunda.

Ne yapmak istediğiniz herhangi bir herhangi bir ve bütün tekrarlarını yerine daha karmaşık olduğunu, söyledi

<a href="something.tld">foo</a>

ile

foo

something.tld etki alanı değilse, o zaman bu hile yapmak gerekir

preg_replace( '/<a href="http:\/\/(?!mysite.com)(.*?)>(.*?)<\/a>/',
              '$2',
              $mystring );

where $mystring is obviously the string you'd like to modify. However, this uses regex lookarounds, a pretty good giveaway that this was not meant to be done ile regexes.

HTH

Tüm bağlantı elemanları bulmak için DOMDocument kullanmak ve sadece kaynak bu şekilde güncelleyebilirsiniz. Ben küçük bir örnek yazdı nasıl use DOMDocument to find all links. Ben çalıştığım bazı projelerde bağlantıları yeniden yazmak için bu yöntemi kullanın. Ben url host uymuyor eğer daha ileri gitmek ve bir etiketi silmek ve metin ile değiştirmek için çok çaba olmaz eminim.

Ben kuvvetle kolay (http://htmlpurifier.org/docs/enduser-uri-filter.html), bir bağlantı filtresi yazmak için yapacak değil ki, http://htmlpurifier.org/ kullanmak değil, aynı zamanda XSS saldırılarına karşı sizi korumak için teşvik edecek. Bir Beyaz listedeki HTML parser kullanarak değilseniz, size edebi ve kaçan html özel karakterler olarak kullanıcı tarafından sağlanan verileri tedavi edilmesi gerekir.