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: <input type="text" value="<?php $text ?>" name="yurl"> <!--$vari--> <br> <!--<br> Height: <input type="text" value="<?php $hth ?>" name="yheight"> $hth <br>--> <!--<br> Width: <input type="text" value="<?php $wdth ?>" name="ywidth"> $wdth <br> <br>--> Autoplay: <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 ('&',$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_url 和
parse_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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |