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 に答える