2011-12-16 187 views
1

我有一些YouTube網址存儲在我需要重寫的數據庫中。重寫YouTube網址

它們存儲格式爲:

$http://youtu.be/IkZuQ-aTIs0 

我需要讓他們重新編寫,如下所示:

$http://youtube.com/v/IkZuQ-aTIs0 

這些值存儲爲一個變量$的VideoType

我打電話給這樣的變量:

$<?php if ($video['VideoType']){ 
$echo "<a rel=\"shadowbox;width=700;height=400;player=swf\" href=\"" . $video['VideoType'] . "\">View Video</a>"; 
$}?> 

我該如何重寫它們?

謝謝你的幫助。

回答

5

您想使用的功能preg_replace

喜歡的東西:

$oldurl = 'youtu.be/blah'; 
$pattern = '/youtu.be/'; 
$replacement = 'youtube.com/v'; 
$newurl = preg_replace($pattern, $replacement, $string); 
1

您可以使用正則表達式來爲你做這個。如果您只有存儲在數據庫中的YouTube網址,那麼只需在最後一個斜槓「IkZuQaTIs0」後面放置該部分,並在「http://www.youtube.com/」之後將其放置在src屬性中就足夠了。

對於這個簡單的解決方案,做這樣的事情:

<?php 
    if ($video['VideoType']) { 
     $last_slash_position = strrpos($video['VideoType'], "/"); 
     $youtube_url_code = substr($video['VideoType'], $last_slash_position); 
     echo "<a rel=\"shadowbox;width=700;height=400;player=swf\" 
       href=\"http://www.youtube.com/".$youtube_url_code."\"> 
       View Video</a>"; 
    } 
?> 

我不能在此刻測試它,也許你可以嘗試用最後一個斜線occurence等的位置,也可以有一個實驗看看函數定義:

http://www.php.net/manual/en/function.substr.php

http://www.php.net/manual/en/function.strrpos.php

但要注意的表現。構建一個腳本,用於標記數據庫並轉換每個URL或在每個條目中存儲一個簡短URL。因爲視圖中的正則表達式永遠不是一個好主意。

更新:將每個條目僅存儲在數據庫中的YouTube視頻標識符/ url代碼會更好,因此在該示例中,它將是IkZuQ-aTIs0。

+0

謝謝你的迴應。我收到「href =」的錯誤... 解析錯誤:語法錯誤,意外T_CONSTANT_ENCAPSED_STRING – cpcdev 2011-12-16 17:44:22