2012-05-18 28 views
0
從WordPress的項目

(簡體)代碼:正則表達式匹配的YouTube鏈接,需要從比賽省略行尾

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 

但是,而是我得到s:

blah blah blah 

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

blah blah blah 

...因爲行尾包含在匹配中。

有什麼建議嗎?正則表達式或非正則表達式解決方案歡迎。

+0

FYI:通過'http://www.youtube.com/watch V = rUtdP3jQKUA'只有一個鏈接到YouTube視頻的方式?還有更多。您鏈接的視頻也可以通過'http:// youtu.be/rUtdP3jQKUA'來獲取。 – meagar

+0

或'http:// www.youtube.com/e/rUtdP3jQKUA' – meagar

回答

1

試試這個:

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

像魅力一樣工作,謝謝! @meagar,謝謝你的額外提示。 – wwninja

相關問題