PHP: metin bir yığın üzerinden bir URL kapmak için nasıl?

6 Cevap php

Diyelim ki Twitter mesajlarını dolu büyük bir RSS beslemesi var ve hepsi düz metin diyelim. Mesajların sürü URL'ler içeren, ve ben linkleri dönüştürülmesi için bu URL'leri istiyorum.

Yani eşit olan bir değişken var:

Sanayi, sayısı ve tarihe göre işten çıkarmalar görselleştirme. Eğilimleri işe benzer görmek için bekliyorum. http://bit.ly/XBW4z

Ve ben dönüşmesi istiyorum:

Sanayi, sayısı ve tarihe göre işten çıkarmalar görselleştirme. Eğilimleri işe benzer görmek için bekliyorum. http://bit.ly/XBW4z

Bunu nasıl yapabilirim? Ben regex ve tip gelince işe yaramaz değilim, bu yüzden yardım çok takdir!

6 Cevap

Hatta ben istediğim bir ... search result ilk bağlantıyı kontrol edin. Onun oldukça eski!

and BTW look at the RHS.. we have similar questions. http://stackoverflow.com/questions/341942/recognize-url-in-plain-text http://stackoverflow.com/questions/635247/regex-for-url-and-image-within-a-text-or-html

Eğer maç istediğinize bağlıdır

Güzel, basit bir regex olduğunu

http\://[a-zA-Z0-9./?&_\-]*

http:// ile başlayan ve [] sadece karakterleri içeren herhangi bir url maç hangi - Z ile A, 0 9 olsa da, -, {[(3) ]}, /, ?, &.

Eğer (vb, https, ftp), diğer protokolleri eşleştirmek istiyorsanız, kullanabileceğiniz

(http|ftp|anyotherprotocolyouwant)\://[a-zA-Z0-9./?&_\-]*

Daha fazla karakter desteklemek istiyorsanız, sadece [] ekleyebilirsiniz.

Güncelleme: büyük desteği unuttum! D'oh

Tamam, burada bu soru (http://stackoverflow.com/questions/635247/regex-for-url-and-image-within-a-text-or-html) şaşırtıcı bir başlık, ama altta bir yardımcı cevabı vardır. En azından, benim ve benim durumlar için çalışıyor!

$text = preg_replace('@(http://([\w-.]+)+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?)@', 
                 '<a href="$1">$1</a>', $text);

Preg_replace işlevi bakmak. Yani böyle bir şey:

$regex_url = "((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)";

preg_replace($regex_url, '<a href="$1">$1</a>', $your_input_string);

http://www.geekzilla.co.uk/view2D3B0109-C1B2-4B4E-BFFD-E8088CBC85FD.htm: alınan URL için düzenli ifade

sadece bazı bilgi eklemek için ... phpclass.org bu sınıfı kontrol, ur sorunu çözecektir ... Bu sınıf bağlantılar bulacaksınız ve de onları dönüştürmek olacak ...

http://www.phpclasses.org/browse/package/6114.html

Geçerli URL'leri eşleşen düzenli ifadeler vardır. Örneğin the complete regular expression for URLs, URL'lerin dilbilgisi tanımından elde ediyor.

Ama açıkça onları bulmaya çalışırken daha bu ilan etmek daha iyidir. Bazı karakterler URL veya sadece metin parçası ise o ayırt edilemeyen bazı durumlar vardır çünkü.