(简化(来自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);