2013-02-10 65 views
1

我當前創建了一個表單,它將採用youtube鏈接和parse/regex提取ID。該功能通過點擊按鈕執行,然後打印URL的ID。有沒有辦法讓它顯示ID沒有按鈕點擊和頁面刷新? EXAMPLE從網頁抓取值,無需刷新頁面或點擊按鈕

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

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; 
     } 
    } 
} 


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

} 


?> 


<form action="" method="POST"> 
    <input type="text" name="ytinput" value="<? $sYoutubeUrl ?>"> 
    <input type="submit" value="Parsen"> 
</form> 
+0

真的不清楚你想要什麼。什麼事件觸發器檢索這個ID,以及需要發送到服務器的內容? – charlietfl 2013-02-10 00:39:04

回答

0

做到這一點的方式是通過JavaScript使用Ajax。

請注意,此解決方案需要使用jQuery JavaScript庫。見http://jquery.com/

首先,我們需要從形式獲取鏈接,這樣做:

var sYoutubeUrl = $('input [name="ytinput"]').val(); 

然後,我們需要使我們的Ajax請求你的函數文件,並得到結果。

$.ajax({ 
     type: 'get', 
     url: '<relative link to function file>/file.php', 
     data: 'sYoutubeUrl='+sYoutubeUrl, 

     //Catch the result 
     success: function(response) { 
      //Assign response to a variable 
      var youtube_id = response; 
      //Display response inside the form 
      $('input [name="ytinput"]').val('youtube_id'); 
     }, 

    }); 

這僅僅是一個基本的指南,你需要從一個POST稍微改變你的PHP文件,改變你的形式觸發形式。你還需要把我給你的JS放在一個觸發器事件裏,可能在表格中提交如下:

$('form').submit(function() { 
    //Code above here 
});