Php 正则表达式要匹配YouTube链接,需要在匹配中省略行尾

Php 正则表达式要匹配YouTube链接,需要在匹配中省略行尾,php,regex,wordpress,Php,Regex,Wordpress,来自WordPress项目的(简化)代码: function fix_youtube_links ($content) { $append = '&w=480&rel=0'; $content = preg_replace('/^http:\/\/(?:www\.)?(?:youtube.com\/(?:v\/|watch[\/\#?])|(youtu\.be\/)).*/im', '$0'.$append, $content); return $cont

来自WordPress项目的(简化)代码:

function fix_youtube_links ($content) {
    $append = '&w=480&rel=0';
    $content = preg_replace('/^http:\/\/(?:www\.)?(?:youtube.com\/(?:v\/|watch[\/\#?])|(youtu\.be\/)).*/im', '$0'.$append, $content);
    return $content;
}
add_filter('the_content', 'fix_youtube_links');
$content
看起来像这样:

blah blah blah

http://www.youtube.com/watch?v=rUtdP3jQKUA

blah blah blah
我想在匹配项中添加
$append
,并得到以下结果:

blah blah blah

http://www.youtube.com/watch?v=rUtdP3jQKUA&w=480&rel=0

blah blah blah
但我得到的却是:

blah blah blah

http://www.youtube.com/watch?v=rUtdP3jQKUA
&w=480&rel=0

blah blah blah
…因为比赛中包括了终点线

有什么建议吗?欢迎使用正则表达式或非正则表达式解决方案。

试试这个:

$content = preg_replace('/^http:\/\/(?:www\.)?(?:youtube.com\/(?:v\/|watch[\/\#?])|(youtu\.be\/))[^\n\r]*/im', '$0'.$append, $content); 

仅供参考:
http://www.youtube.com/watch?v=rUtdP3jQKUA
是链接到Youtube视频的唯一方法。还有很多。您链接的视频也可以通过
http://youtu.be/rUtdP3jQKUA
例如。或
http://www.youtube.com/e/rUtdP3jQKUA
工作很有魅力,谢谢@meagar,谢谢你的额外提示。