Вопрос по regex, php – пересмотреть любые URL или ссылки в php

-1

У меня есть это регулярное выражение, чтобы поймать любой URL в php:

((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)

но он не уловил полный URL ..... например

Вот:

http://v12.lscache6.c.youtube.com/videoplayback?app=youtube_gdata&devkey=AX8iKz393pCCMUL6wqrPOZoO88HsQjpE1a8d1GxQnGDm&el=videos&upn=0K3DA3wYhjI&uaopt=no-save&source=youtube&itag=18&id=ab59b1e9554eca6d&ip=0.0.0.0&ipbits=0&expire=1339342342&sparams=id,itag,source,uaopt,upn,ip,ipbits,expire&signature=5026BE137B41D5CD9785E752D1892903D432974C.BA1D4E0C138210B2275391A2A3D469E582183621&key=yta1&cms_redirect=yes

это только поймал

http://v12.lscache6.c.youtube.com/videoplayback?app=youtube_gdata&devkey=AX8iKz393pCCMUL6wqrPOZoO88HsQjpE1a8d1GxQnGDm&el=videos&upn=0K3DA3wYhjI&uaopt=no-save&source=youtube&itag=18&id=ab59b1e9554eca6d& IP = 0.0.0.0 & амп; ipbits = 0 & амп; истекают = 1339342342 & амп; sparams = идентификатор

Так что мне нужно, чтобы поймать полный URL?

Эти URL не одинаковы? Можете ли вы привести реальный пример? afuzzyllama
Для чего тебе это регулярное выражение? CodeZombie

Ваш Ответ

2   ответа
1

Ваше регулярное выражение исправлено:

((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@,.\w_]*)#?(?:[\w]*)?))

Хороший сайт для проверки регулярных выражений:Rubular

Если вы хотите разбить URL на части, вы можете использовать PHP-функцию parse_url ()

Error: User Rate Limit Exceeded
0

May try this one:

\b(?:(?:https?|ftp|file)://|www\..)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]

Explanation

<!--
\b(?:(?:https?|ftp|file)://|www\..)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]

Options: case insensitive

Assert position at a word boundary «\b»
Match the regular expression below «(?:(?:https?|ftp|file)://|www\..)»
   Match either the regular expression below (attempting the next alternative only if this one fails) «(?:https?|ftp|file)://»
      Match the regular expression below «(?:https?|ftp|file)»
         Match either the regular expression below (attempting the next alternative only if this one fails) «https?»
            Match the characters “http” literally «http»
            Match the character “s” literally «s?»
               Between zero and one times, as many times as possible, giving back as needed (greedy) «?»
         Or match regular expression number 2 below (attempting the next alternative only if this one fails) «ftp»
            Match the characters “ftp” literally «ftp»
         Or match regular expression number 3 below (the entire group fails if this one fails to match) «file»
            Match the characters “file” literally «file»
      Match the characters “://” literally «://»
   Or match regular expression number 2 below (attempting the next alternative only if this one fails) «www\.»
      Match the characters “www” literally «www»
      Match the character “.” literally «\.»
   Or match regular expression number 3 below (the entire group fails if this one fails to match) «ftp\.»
      Match the characters “ftp” literally «ftp»
      Match the character “.” literally «\.»
Match a single character present in the list below «[-A-Z0-9+&@#/%=~_|$?!:,.]*»
   Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
   The character “-” «-»
   A character in the range between “A” and “Z” «A-Z»
   A character in the range between “0” and “9” «0-9»
   One of the characters “+&@#/%=~_|$?!:,.” «+&@#/%=~_|$?!:,.»
Match a single character present in the list below «[A-Z0-9+&@#/%=~_|$]»
   A character in the range between “A” and “Z” «A-Z»
   A character in the range between “0” and “9” «0-9»
   One of the characters “+&@#/%=~_|$” «+&@#/%=~_|$»
-->

Похожие вопросы