检查URL是否与模式匹配

时间:2013-12-12 22:20:52

标签: php regex

我在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,如果不转换它,那么如何比较任何想法如果是,那么离开吗?

1 个答案:

答案 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;