0

v次の正規表現でクエリの値を一致させようとしています:

http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-z0-9-_]+)

サンプル URL:

http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1

URL は常に www で、v値を一致させようとしているだけです。私の構文の何が問題なのか誰か知っていますか?

4

3 に答える 3

2

機能を使用してくださいparse_url()。使い方はずっと簡単です:

$url_components = parse_url("http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1");

echo $url_components['query'];

そこから残りの作業を行い、最初の数文字を切り取ることができると思います。これを行うと、 の後にあるものだけが残りますv=

于 2012-05-18T05:00:28.357 に答える
1

大文字を忘れた

http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-zA-Z0-9-_]+)
于 2012-05-18T05:00:32.803 に答える
0

ピリオド「。」をエスケープしていません。video.php で。パス/URLをエスケープしている場合は、別の区切り文字も使用します-次のように:

preg_match( "#http://www\.domain\.code/videos/video\.php\?.*v=([^&]*)#", $url, $matches );

v= がクエリ文字列の途中にある場合、

v=([^&]*)

.. は、何らかの理由でアルファと _,- 以外の文字が含まれる場合に備えて、別の & 記号までのすべてに一致します。

于 2012-05-18T05:03:09.807 に答える