加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP / Regex:从youtube url嵌入代码中提取视频ID

发布时间:2020-12-13 16:17:14 所属栏目:PHP教程 来源:网络整理
导读:我试图从youtube网址输入中获取嵌入代码.我遇到了这个 ANSWER,但现在我将这个答案应用到我的代码中我得不到任何结果.我的目标是让正则表达式将URL设置为: http://www.youtube.com/watch?v=videoid.我如何能够使用正则表达式函数实际使用我的代码? html for
我试图从youtube网址输入中获取嵌入代码.我遇到了这个 ANSWER,但现在我将这个答案应用到我的代码中我得不到任何结果.我的目标是让正则表达式将URL设置为: http://www.youtube.com/watch?v=videoid.我如何能够使用正则表达式函数实际使用我的代码?

<html>
    <form method="post" action="">
    URL:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="text" value="<?php $text ?>" name="yurl"> <!--$vari-->
    <br>
    <!--<br>
    Height:&nbsp;
    <input type="text" value="<?php $hth ?>" name="yheight"> $hth
    <br>-->
    <!--<br>
    Width:&nbsp;&nbsp;
    <input type="text" value="<?php $wdth ?>" name="ywidth"> $wdth
    <br>
    <br>-->
    Autoplay:&nbsp;
    <input type="checkbox" value="<?php $auto1; $auto2; ?>" name="yautop">  <!--$auto1 $auto2-->
    <br>
    <input type="submit" value="Generate Embed Code" name="ysubmit">
    <br>
    </form>
</html>

PHP

<?php


$vari ='';

if($_POST)
{



    function linkifyYouTubeURLs($vari) {
        $vari = preg_replace('~
            # Match non-linked youtube URL in the wild. (Rev:20111012)
            https?://         # Required scheme. Either http or https.
            (?:[0-9A-Z-]+.)? # Optional subdomain.
            (?:               # Group host alternatives.
              youtu.be/      # Either youtu.be,| youtube.com    # or youtube.com followed by
              S*             # Allow anything up to VIDEO_ID,[^w-s]       # but char before ID is non-ID char.
            )                 # End host alternatives.
            ([w-]{11})      # $1: VIDEO_ID is exactly 11 chars.
            (?=[^w-]|$)     # Assert next char is non-ID or EOS.
            (?!               # Assert URL is not pre-linked.
              [?=&+%w]*      # Allow URL (query) remainder.
              (?:             # Group pre-linked alternatives.
                ['"][^<>]*>  # Either inside a start tag,| </a>          # or inside <a> element text contents.
              )               # End recognized pre-linked alts.
            )                 # End negative lookahead assertion.
            [?=&+%w-]*        # Consume any URL (query) remainder.
            ~ix','<a href="http://www.youtube.com/watch?v=$1">YouTube link: $1</a>',$vari);
        return $vari;
    }



    $vari       = $_POST['yurl'];
    $hth        = 300; //$_POST['yheight'];
    $wdth       = 500; //$_POST['ywidth'];
    $is_auto    =   0;

    $step1 =explode ('v=',$vari);
    $step2 =explode ('&amp;',$step1[1]);

    if(isset($_POST['yautop'] ))
    {
        if($_POST['yautop'] == 1)
            $is_auto    =   1;
    }
    $auto1  = '?autoplay='.$is_auto;
    $auto2  = '&autoplay='.$is_auto;
?>

<p>Iframe Result:</p>   
<?
//Iframe code with optional autoplay

echo  ('<iframe src="http://www.youtube.com/embed/'.$step2[0].'" frameborder="0" width="'.$wdth.'" height="'.$hth.'"></iframe>');
?>

解决方法

也许我在这里遗漏了一些东西但是使用 parse_urlparse_str并不容易:

$url = 'http://www.youtube.com/watch?v=Imh0vEnOMXU&feature=g-vrec';    // some youtube url
$parsed_url = parse_url($url);
/*
 * Do some checks on components if necessary
 */
parse_str($parsed_url['query'],$parsed_query_string);
$v = $parsed_query_string['v'];

见example on codepad.

当然,如果你输入youtube提供的完整代码片段,你需要一个DOM解析器来获取url.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读