2014-01-30 139 views
2

我已經在php中創建了一個博客。用戶可以寫一些東西併發布。如果這包括網絡地址,然後自動鏈接使用此創建:youtube嵌入代碼與PHP

<?php 

//...code 

$row['comment'] = preg_replace('@(https?://([-\w.]+[-\w])+(:\d+)?(/([\w-.~:/?#\[\]\@!$&\'()*+,;=%]*)?)?)@', '<a href="$1" target="_blank"><font color="#69aa35">$1</font></a>', $row['comment']); 

?> 

在帖子中使用此,文字successfuly貼在裏面的文字鏈接格式顯示的網址。任何想法如何改變這一點,以便如果有youtube的鏈接,然後創建一個youtube框架。例如,在Facebook上,當您發佈YouTube視頻地址時,會創建併發布YouTube視頻幀,而不是鏈接。

+0

這段代碼是無關緊要的。您需要使用正則表達式來提取YouTube視頻slu and,然後使用它在頁面上創建iframe。 – Shomz

+0

1.您使用''標籤生成無效html; 2.使用markdown [你已經在這裏做了SO]; 3.例如,你可以通過'DOMDocument'在生成的輸出中發出替換。 – moonwave99

+0

我只想幫助我如何更改我的preg_replace語法()。我注意到,youtube在每個視頻之前使用「http://www.youtube.com/watch?v=」標準 – user2491321

回答

1

你知道解決方案嗎? :)如果該片段包含youtube.com網址,那麼使用相同的模式匹配,你可以用一個youtube嵌入標籤替換它:)

基本上它會是這樣的僞代碼。

  • 檢查粘貼,看看YouTube的URL出現在註釋(修改您使用查找URL相同的正則表達式,只讓特定的YouTube)的
  • 如果是的話,那麼將其替換爲:

    <iframe type="text/html" width="640" height="385" src="<youtube URL>" frameborder="0"> </iframe>

+0

任何想法如何更改我的preg_replace()? – user2491321

+1

嘗試'^ http:\/\ /(?: www \。)?youtube.com \/watch \?(?= [^?] * v = \ w +)(?:[^ \ s?] +) ?$' – raidenace

+0

它給了我:警告:preg_replace():未知修飾符'?'任何想法如何解決這個問題? – user2491321

2

我提高了我的答案和測試此代碼:

<?php 
// This is your comment string containing the youtube link 
$string="Here is a link - https://www.youtube.com/watch?v=LJHFXenOPi4"; 
// This will remove all links from the input string 
preg_match('/[a-zA-Z]+:\/\/[0-9a-zA-Z;.\/?:@=_#&%~,+$]+/', $string, $matches); 
foreach($matches as $url){ 
    // Parse each url within the comment data 
    $input = parse_url($url); 
    if ($input['host'] == 'youtube.com' || $input['host'] == 'www.youtube.com') { 
     // If it is a youtube link, then parse the get variables 
     parse_str(parse_url($url, PHP_URL_QUERY), $variables); 
     // Echo out the iframe with the relevant video ID 
     echo '<iframe width="560" height="315" src="//www.youtube.com/embed/'.$variables['v'].'" frameborder="0" allowfullscreen></iframe>'; 
    } 
} 
?> 

我希望這是你正在尋找的東西,它已經爲我做了幾個測試