2

次のようなYouTubeのURLから文字列を取得する必要があります。

http://www.youtube.com/embed/WJlfVjGt6Hg?list=EC1512BD72E7C9FFCA&hl=en_US

"../embed/ " と "?list=.." の間の変数を取得する必要があります (-> WJlfVjGt6Hg )。

他の YouTube URL のコードは次のようになります。

// Checks for YouTube iframe, the new standard since at least 2011
if ( !isset( $matches[1] ) ) {
    preg_match( '#https?://www\.youtube(?:\-nocookie)?\.com/embed/([A-Za-z0-9\-_]+)#', $markup, $matches );}

どうやってやるの ?

4

3 に答える 3

3

これは、URL からのパスのベース名です。

$url = 'http://www.youtube.com/embed/WJlfVjGt6Hg?list=EC1512BD72E7C9FFCA&hl=en_US';
echo basename(parse_url($url, PHP_URL_PATH));
// WJlfVjGt6Hg
于 2012-12-17T04:14:16.077 に答える
1

正規表現を使用しないでください。文字列に関係するすべての問題が正規表現で解決されるとは限りません。

PHP に組み込まれている関数を使用しparse_url()て、パーツを分解してください。

http://php.net/manual/en/function.parse-url.phpはそのマニュアルページです。使用方法は次のとおりです。

$url = 'http://www.youtube.com/embed/WJlfVjGt6Hg?list=EC1512BD72E7C9FFCA&hl=en_US';

$parts = parse_url( $url );
print_r( $parts );

$path_parts = explode( '/', $parts['path'] );
print_r( $path_parts );

$last_part = $path_parts[count($path_parts)-1];

print "Youtube video ID = $last_part\n";

これを実行すると、次のようになります。

Array
(
    [scheme] => http
    [host] => www.youtube.com
    [path] => /embed/WJlfVjGt6Hg
    [query] => list=EC1512BD72E7C9FFCA&hl=en_US
)
Array
(
    [0] => 
    [1] => embed
    [2] => WJlfVjGt6Hg
)
Youtube video ID = WJlfVjGt6Hg
于 2012-12-17T04:04:12.663 に答える
0

こんにちは、次の正規表現を使用できます。

/embed\/([^\?]+)/

簡単な説明 - これは、疑問符が見つかるまで、「embed/」以降の疑問符ではないすべての文字に一致します。

探している出力を表示するサンプル スクリプトを次に示します。

<?php

$test="http://www.youtube.com/embed/WJlfVjGt6Hg?list=EC1512BD72E7C9FFCA&amp;hl=en_US";

$matches = array();
preg_match('/embed\/([^\?]+)/', $test, $matches);
print_r($matches);
// The value we're looking for is in index 1 of the array
echo $matches[1];

出力は次のとおりです。

Array
(
[0] => embed/WJlfVjGt6Hg
[1] => WJlfVjGt6Hg
)
WJlfVjGt6Hg
于 2012-12-17T03:22:53.250 に答える