2013-12-12 118 views
0

我在Wordpress上尝试这个,我成功地将youtube的URL转换为嵌入,但我想要做的是检查第一个如果URL是嵌入然后离开它和如果它不是很好,那么它应该被转换为嵌入,转换部分已经完成了,我的问题是,我不知道如何去比较,我想这:检查URL是否匹配模式

$video = $user_details->get('embed_code'); 
      $search  = '#(.*?)(?:href="https?://)?(?:www\.)?(?:youtu\.be/|youtube\.com(?:/embed/|/v/|/watch?.*?v=))([\w\-]{10,12}).*#x'; 
      $replace = 'http://www.youtube.com/embed/$2'; 

      if(!preg_match($search,$video)){ 
      $url_video = preg_replace($search,$replace,$video); 
      $url_final = '<iframe width="560" height="315" src="'.$url_video.'" frameborder="0" allowfullscreen></iframe>'; 
} 

<div class="youtube_cls"> 
    <?php echo $url_final; ?> 
    </div> 

所以我试图用preg_match但我不认为它的作品,任何想法如果$video格式如$search如果不转换它,如果是,然后离开它?

+0

给'preg_match'一个镜头 - 如果它匹配,它返回true,否则返回false。 – brandonscript

+0

我做了,代码在上面,但它不工作... – Liza

+0

这就是我没有注意到的。好的,你能给出一个$视频网址的样本吗? – brandonscript

回答

1

您的代码实际上效果很好 - 只是如果您的匹配不匹配,$url_final没有设置。

更换对$video的评论,以便在$url_final下看到两个回显正确。

$video = "http://www.youtube.com/watch?v=XUdt_aBmkwo"; 
//$video = '<iframe width="560" height="315" src="//www.youtube.com/embed/XUdt_aBmkwo" frameborder="0" allowfullscreen></iframe>'; 
$search = '#(.*?)(?:href="https?://)?(?:www\.)?(?:youtu\.be/|youtube\.com(?:/embed/|/v/|/watch?.*?v=))([\w\-]{10,12}).*#x'; 
$replace = 'http://www.youtube.com/embed/$2'; 
$url_final = $video; //set $url_final to $video so if !preg_match, it still returns 

if(!preg_match($search,$video)) 
{ 
    $url_video = preg_replace($search,$replace,$video); 
    $url_final = '<iframe width="560" height="315" src="'.$url_video.'" frameborder="0" allowfullscreen></iframe>'; 
} 

echo $url_final; 
+0

知道了:)谢谢! +1 – Liza