0

フォーム フィールドから取得した YouTube の URL を検証しようとしています。私がセットアップした方法では、何を入力してもエラーが発生しません。 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のURLを含むメールを識別するためのより良い方法はありますか

于 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 に答える