2011-12-16 142 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