我正在尝试验证从表单字段中获取的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,我在处理适用于我如何验证其他字段的表单之前对其进行检查,因此只是这种方法失败了。
您可以使用 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";
}
如果没有有效的视频 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/>';
}
}
我在用于从 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,从智能手机或youTube应用程序"分享"它们。
有没有人有更好的方法来识别带有YouTube网址的电子邮件