سؤال

في نظام أقوم بتطويره، أحتاج إلى التعرف على رابط YouTube بالتنسيق التالي

يوتيوب] عنوان URL YouTube [/ YouTube

في اللحظة التي وصلت فيها إلى هذا التعبير العادي:

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

ولكن هذا النمط غير قادر على التعرف على عنوان URL

موقع YouTubehttp://www.youtube.com/watch؟v=s3wxkv1vw54&feature=fvst حساب/youtube

لاحظ ال ميزة = fvst..

يمكن لبعض واحد مساعدتي في التعرف على كل url يوتيوب ممكن؟

هل كانت مفيدة؟

المحلول

ماذا عن

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

تحرير: تغيير Regex لإبقاء معرف الفيديو فقط داخل قوسين.

نصائح أخرى

ملاحظات:
أود إجراء مباراة غير حساسة للحالة على عناوين URL (/ I)
وبعد يطابق أي شيء؛ استعمال . بدلا من ذلك لتتناسب مع عنوان URL
أيضا، "www" في عناوين Urls يوتيوب اختيارية.
استخدم (. [AZ] +) {1،2} بدلا من ". *" للمطابقة ".com"، ".co.uk"، .. بعد "Youtube"

على افتراض الجزء "والميزات" اختياري، فإن Regex سيكون:

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

على افتراض الجزء "والميزات" اختياري، ويمكن أن يكون هناك معلمات أخرى من "الميزة":

/\[youtube\]http:\/\/(www\.)?youtube(\.[a-z]+){1,2}\/watch\?v=([a-z0-9_-]*)(&([a-z]+)=([a-z0-9_-])+)*?\[\/youtube\]/is
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top