0

来自 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

...因为比赛中包含了行尾。

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

4

1 回答 1

1

试试这个:

$content = preg_replace('/^http:\/\/(?:www\.)?(?:youtube.com\/(?:v\/|watch[\/\#?])|(youtu\.be\/))[^\n\r]*/im', '$0'.$append, $content); 
于 2012-05-18T17:59:29.853 回答