2013-02-09 94 views
0

我目前使用我的功能getYoutubeId來提取youtube視頻ID。該功能通常解析該鏈接以找到其相應的ID。但是我無法爲輸入文本框分配一個php變量,然後將url傳遞給該函數並最終提取該ID。在將url粘貼到文本框中時,視頻ID或Nothing都會被回顯。這裏有一個例子:Mockup SITE解析URL以提取ID

<input type="text" name="youtube" value="<? $sYoutubeUrl ?>"> 
    <input type="submit" value="Parsen"> 


    <? 

    function getYoutubeId($sYoutubeUrl) { 

     # set to zero 
     $youtube_id = ""; 
     $sYoutubeUrl = trim($sYoutubeUrl); 

     # the User entered only the eleven chars long id, Case 1 
     if(strlen($sYoutubeUrl) === 11) { 
      $youtube_id = $sYoutubeUrl; 
      return $sYoutubeUrl; 
     } 

     # the User entered a Url 
     else { 

      # try to get all Cases 
      if (preg_match('~(?:youtube\.com/(?:user/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})~i', $sYoutubeUrl, $match)) { 
       $youtube_id = $match[1]; 
       return $youtube_id; 
      } 
      # try to get some other channel codes, and fallback extractor 
      elseif(preg_match('~http://www.youtube.com/v/([A-Za-z0-9\-_]+).+?|embed\/([0-9A-Za-z-_]{11})|watch\?v\=([0-9A-Za-z-_]{11})|#.*/([0-9A-Za-z-_]{11})~si', $sYoutubeUrl, $match)) { 

       for ($i=1; $i<=4; $i++) { 
        if (strlen($match[$i])==11) { 
         $youtube_id = $match[$i]; 
         break; 
        } 
       } 
       return $youtube_id; 
      } 
      else { 
       $youtube_id = "No valid YoutubeId extracted"; 
       return $youtube_id; 
      } 
     } 
    } 

    echo (getYoutubeId($sYoutubeUrl)); 

    ?> 
+0

你在哪裏調用函數(getYoutubeId($ sYoutubeUrl))? – 2013-02-09 20:19:07

+0

@Akam yea我用'(getYoutubeId($ sYoutubeUrl))'更新了我的代碼'在結尾處調用 – CodingWonders90 2013-02-09 20:22:47

+0

並非所有YouTube視頻在URL中的'v'參數中都有一個ID? – 2013-02-09 20:26:21

回答

1

你需要把輸入的標籤的形式中,像這樣:

<form action="" method="POST"> 
    <input type="text" name="youtube" value="" /> 
    <input type="submit" value="Parsen" /> 
</form> 

然後檢查,如果表單已經提交,並顯示您的信息:

?> 

if(isset($_POST['youtube'])){ 

    // include that function here 

    print 'Result: ' . getYoutubeId($_POST['youtube']); 
} 

考慮使用parse_url()從URL獲取視頻ID,而不是正則表達式。