Farklı URL'ler için PHP Regex

1 Cevap php

Ben 3 farklı URL türlerini maç bir şekilde anlamaya çalışıyorum, bunlar;

  1. http://(www.)domain.com or www.domain.com
  2. http://(www.)domain.com/image.jpg/.png/gif or www.domain.com/image.jpg/.png/.gif
  3. http://(www.)youtube.com/watch?v=Li1zXaEYol8 or www.youtube.com/watch?v=Li1zXaEYol8

Onlar http veya www olmadan sadece domain.com ise Not, ben onları çözümlü istemiyorum.

The problem I'm facing is getting all three - or even 2 to work together, I have a class that does auto linking, so if there is something with http:// or www. it will link it, but then if I put an image in, it parses the HTML for the URL in the image like:

<img src="<a href="www.domain.com">domain.com</a>" />

çöp hangi: (

Ben de YouTube URL'ler için taramak istiyorum, ve görüntü yerine URL gösterir böylece daha sonra, embed kodu ile URL'sini değiştirmek olacaktır. Ben kadar URL'yi kimliğini dışarı çıkarma gibi var, ama yedek çalışma alamadım.

Insanların yorumları inputing nerede bu, yorum alanı gibi, bir textarea kapalı çalışıyor ve böylece neden görüntüleri ve YouTube videolarını HTML ayrıştırmak, otomatik bağlantı URL'ler için iyi olacağını unutmayın.

Verileri SQL sorgusu ile gösterilen ve bazı basit biçimlendirme yapmak yerine bazı str_replace şeylerle $ yorumlarınıza ['message'], dışarı yankılanır.

Herhangi bir yardım mutluluk duyacağız.

1 Cevap

Buyrun:

(?:http:\/\/www\.|http:\/\/|www\.)(?:youtube\.com\/watch\?v=(?:\w+)|domain\.com\/image.(?:jpg|png|gif)|domain\.com)

Veya sınırlayıcı ile:

~(?:http:\/\/www\.|http:\/\/|www\.)(?:youtube\.com\/watch\?v=(?:\w+)|domain\.com\/image.(?:jpg|png|gif)|domain\.com)~i

You can test the above RegExs @ Robular.

URL'ler Ben bir DOM ayrıştırıcı kullanmanızı öneririz istenmeyen HTML etiketleri içinde olup olmadığını öğrenmek için.

How to mimic StackOverflow Auto-Link Behavior : Ayrıca, bu ilgili soruyu kontrol.


YouTube değiştirilmesi konusunda böyle bir şey yapabilirsiniz:

echo preg_replace('~youtube\.com\/watch\?v=(\w+)~i', 'embed code $1', $comments['message']);