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
値を一致させようとしているだけです。私の構文の何が問題なのか誰か知っていますか?
機能を使用してくださいparse_url()
。使い方はずっと簡単です:
$url_components = parse_url("http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1");
echo $url_components['query'];
そこから残りの作業を行い、最初の数文字を切り取ることができると思います。これを行うと、 の後にあるものだけが残りますv=
。
大文字を忘れた
http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-zA-Z0-9-_]+)
ピリオド「。」をエスケープしていません。video.php で。パス/URLをエスケープしている場合は、別の区切り文字も使用します-次のように:
preg_match( "#http://www\.domain\.code/videos/video\.php\?.*v=([^&]*)#", $url, $matches );
v= がクエリ文字列の途中にある場合、
v=([^&]*)
.. は、何らかの理由でアルファと _,- 以外の文字が含まれる場合に備えて、別の & 記号までのすべてに一致します。