我在Wordpress上尝试这个,我成功地将youtube的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 :(得分: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;