0

我正在尝试验证从表单字段中获取的 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 ,我在处理表单之前检查它,该表单适用于我如何验证其他字段,所以只是这种方法失败了。

4

3 回答 3

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";
}
于 2012-09-20T18:18:47.533 回答
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,从智能手机或 YouTube 应用程序“共享”它们。

有没有人有更好的方法来识别带有 YouTube 网址的电子邮件

于 2013-01-03T16:55:34.747 回答
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/>';
    }
}
于 2012-09-20T16:50:42.327 回答