Php 正则表达式要匹配YouTube链接,需要在匹配中省略行尾
来自WordPress项目的(简化)代码: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
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,谢谢你的额外提示。