-1

私はphpのURLをキャッチするための正規表現を持っています:

((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[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&ita

では、完全なURLを取得するには何が必要ですか?

4

2 に答える 2

1

正規表現にカンマ文字を追加する必要があります。

あなたの正規表現は修正されました:

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

正規表現を検証するのに適したサイト: Rubular

URL を部分に分解したい場合は、parse_url() PHP 関数を使用できます。

于 2012-05-17T16:03:43.930 に答える
0

これを試してみてください:

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

説明

<!--
\b(?:(?:https?|ftp|file)://|www\.|ftp\.)[-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\.|ftp\.)»
   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 “+&@#/%=~_|$” «+&@#/%=~_|$»
-->
于 2012-05-17T16:03:55.337 に答える