我正在尝试验证从表单字段中获取的youtube网址。无论我输入什么,我设置它的方式都没有捕获任何错误。我使用getVideoId()从有效的URL中提取视频ID。
if ($_POST['video_url'] != null && $_POST['video_url'] != 'Youtube URL') {
$vid_url = $_POST['video_url'];
$video_id = getVideoId($vid_url);
$headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $video_id);
if (strpos($headers[0], '200')) {
$video_url = $vid_url;
} else {
$output .= 'This is not an existing youtube video<br/>';
}
}
$ output设置为null,我在处理表单之前检查它,这对我如何验证其他字段起作用,因此只是这个方法失败了。
答案 0 :(得分:2)
你可以使用cURL
来做到这一点$curr_curl = "http://gdata.youtube.com/feeds/api/videos/".$video_id."?alt=json&v=2";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $curr_curl);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($code == 200) {
echo "Valid URL";
}
答案 1 :(得分:0)
如果没有有效的视频ID,则$ video_id为空。 如果您尝试:
$headers = get_headers('http://gdata.youtube.com/feeds/api/videos/');
echo $headers[0];
你会看到它返回200。
$headers = get_headers('http://gdata.youtube.com/feeds/api/videos/SOMETHINGINVALID');
echo $headers[0];
返回一些描述的4xx。
你需要陷入两种情况:
if ($_POST['video_url'] != null && $_POST['video_url'] != 'Youtube URL') {
$vid_url = $_POST['video_url'];
$video_id = getVideoId($vid_url);
if ($video_id) {
$headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $video_id);
if (strpos($headers[0], '200')) {
$video_url = $vid_url;
} else {
$output .= 'This is not an existing youtube video<br/>';
}
} else {
$output .= 'This is not an existing youtube video<br/>';
}
}
答案 2 :(得分:0)
我在用于从Gmail帐户获取电子邮件的php脚本中使用以下代码我将不胜感激所提供的任何改进!!
function checkForYouTube($body,$androidid){
$searchArg = "http://www.youtube.com/watch?v";
$pos = strpos($body,$searchArg);
if ($pos){
$url = substr($body,$pos,100);
$pos1 = strpos($url,"&");
$url = substr($url,0, $pos1);
$pos = strrpos($url,"=");
$movieId = trim(substr($url,$pos+1));
if (substr($movieId,0,2)=="3D")$movieId = substr($movieId,2);
$url = $searchArg."=".$movieId;
$comment = "(Movie=".$url.")".$comment;
$inc = insertfamilypicture ($androidid,$comment,$url);
sendYouTubeMovie($androidid, $movieId, $inc);
return true;
}
return (false);
}
返回可以删除电子邮件。 对于Android用户来说,抓住YouTube“分享”似乎是一种粗略而且准备好的方式。
该用例是一款永远在线的平板电脑,适合精通计算机的资深人士,可以让他的家人通过智能手机或youTube应用程序“分享”有趣的YouTubes。
有没有人有更好的方法来识别带有YouTube网址的电子邮件