Php preg_匹配youtube id并删除url

Php preg_匹配youtube id并删除url,php,regex,string,Php,Regex,String,我正在尝试获取youtube视频id并用youtube视频id替换url。到目前为止,我找到了获取视频id的方法,但似乎无法删除url if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match)) { $video_id = $match[1]; } 示例: ht

我正在尝试获取youtube视频id并用youtube视频id替换url。到目前为止,我找到了获取视频id的方法,但似乎无法删除url

if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match)) {
    $video_id = $match[1];
}
示例:

   http://youtu.be/dQw4w9WgXcQ ...
   http://www.youtube.com/embed/dQw4w9WgXcQ ...
   http://www.youtube.com/watch?v=dQw4w9WgXcQ ...
   http://www.youtube.com/?v=dQw4w9WgXcQ ...
   http://www.youtube.com/v/dQw4w9WgXcQ ...
   http://www.youtube.com/e/dQw4w9WgXcQ ...
   http://www.youtube.com/user/username#p/u/11/dQw4w9WgXcQ ...
   http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/dQw4w9WgXcQ ...
   http://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ ...         
请注意,youtube url在视频id之后还可以有额外的参数


非常感谢您的帮助。谢谢

对于所有示例URL,此preg\u replace有效。另外,删除视频ID后的所有参数

$videoID =  preg_replace("#[&\?].+$#", "", preg_replace("#http://(?:www\.)?youtu\.?be(?:\.com)?/(embed/|watch\?v=|\?v=|v/|e/|.+/|watch.*v=|)#i", "", $url));

对于所有示例URL,此preg_replace有效。另外,删除视频ID后的所有参数

$videoID =  preg_replace("#[&\?].+$#", "", preg_replace("#http://(?:www\.)?youtu\.?be(?:\.com)?/(embed/|watch\?v=|\?v=|v/|e/|.+/|watch.*v=|)#i", "", $url));
试试这个:

<?php
$url = 'http://www.youtube.com/?v=dQw4w9WgXcQ&foo=bar&test=baz';
$path = parse_url($url, PHP_URL_PATH);
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $args);
echo "http://www.youtube.com/watch?v=". $args['v'];
试试这个:

<?php
$url = 'http://www.youtube.com/?v=dQw4w9WgXcQ&foo=bar&test=baz';
$path = parse_url($url, PHP_URL_PATH);
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $args);
echo "http://www.youtube.com/watch?v=". $args['v'];

你得到了什么价值?什么不起作用?通过删除URL,您可能想使用preg_替换,而不仅仅是preg_匹配preg_匹配正在起作用。我只是找不到一种方法来用视频替换url。我的问题不是找到youtube ID。你得到了什么价值?什么不起作用?通过删除URL,您可能想使用preg_替换,而不仅仅是preg_匹配preg_匹配正在起作用。我只是找不到用视频替换url的方法,@webarto的可能副本我的问题不是查找youtube id,它在处理youtube id后的参数时遇到问题。请尝试以下字符串
hello我的名字是:)测试[tag][/tag]http://www.youtube.com/embed/dQw4w9WgXcQ?yup=2&t=2 你好,这是另一个测试:);)好的,再编辑一次,现在如果以“?”开头,它也应该替换参数。它在处理youtube id后的参数时遇到问题。请尝试以下字符串
你好,我的名字是:)测试[tag][/tag]http://www.youtube.com/embed/dQw4w9WgXcQ?yup=2&t=2 你好,这是另一个测试:);)好的,再编辑一次,现在如果以“”开头,它也应该替换参数