Youtube linki için Reg exp

2 Cevap php

Ben geliştiriyorum bir sistemde ben aşağıdaki biçimde youtube linki tanımak gerekir

[Youtube] youtube url [/ youtube]

Şu an için bu normal bir ifade geldi:

#\[youtube\]http://www.youtube\.(.*)/watch\?v=([a-zA-Z0-9_-]*)\[\/youtube\]#s

Ama bu model gibi url tanımak mümkün değil

[Youtube] http://www.youtube.com/watch?v=s3wXkv1VW54&feature=fvst [/ youtube]

feature=fvst Not.

Bazı biri bana tüm olası youtube url tanımanıza yardımcı olabilir?

2 Cevap

Nasıl hakkında

|\[youtube\]http://www.youtube\.(.*?)/watch\?v=([a-zA-Z0-9_-]*)[%&=#a-zA-Z0-9_-]*\[\/youtube\]|s

EDIT: Parantez içindeki sadece video id tutmak için regex değiştirildi.

Notes:
I'd perform a case-insensitive match on URLs (/i)
. matches anything; use \. instead to match the URL
Also, "www." in Youtube URLs is optional.
Use (\.[a-z]+){1,2} instead of ".*" to match ".com", ".co.uk", .. after "youtube"

Assuming the "&feature" part is optional, the regex would be:

/\[youtube\]http:\/\/(www\.)?youtube(\.[a-z]+){1,2}\/watch\?v=([a-z0-9_-]*)(&feature=([a-z]+))?\[\/youtube\]/is

"& Feature" bölümünü varsayarsak isteğe VE "özelliği" dışında diğer parametreler olabilir:

/\[youtube\]http:\/\/(www\.)?youtube(\.[a-z]+){1,2}\/watch\?v=([a-z0-9_-]*)(&([a-z]+)=([a-z0-9_-])+)*?\[\/youtube\]/is