var $conn = false;
var $username = "";
var $password = "";
var $error = false;
function GetBetween($content,$start,$end){
$r = explode($start, $content);
if (isset($r[1])){
$r = explode($end, $r[1]);
return $r[0];
}
return '';
}
function get($url)
{
$this->conn = new Curl('youtube');
$html = $this->conn->get($url);
if(strstr($html,'verify-age-thumb'))
{
$this->error = "Adult Video Detected";
return false;
}
if(strstr($html,'das_captcha'))
{
$this->error = "Captcah Found please run on diffrent server";
return false;
}
if(!preg_match('/encoded_fmt_stream_map.*/',$html,$match))
{
$this->error = "Error Locating Download URL's";
return false;
}
$fmt_url = substr(urldecode($match[0]), 1);
$urls = explode(',',$fmt_url);
$foundArray = array();
foreach($urls as $url)
{
$url_end = strstr($url, "&quality");
// $foundArray[] = $this->GetBetween($url, "&url=", "&type=");
$foundArray[substr(strstr($url_end, "&itag="), 6)] = substr((str_replace($url_end, "", $url)), 4);
}
$formats = array(
'5'=>array('flv','Low Quality'),
'6'=>array('flv','Low Quality'),
'13'=>array('3gp','Low Quality'),
'17'=>array('3gp','Medium Quality'),
'18'=>array('mp4','High Quality (480p)'),
'22'=>array('mp4','High Quality (720p)'),
'34'=>array('flv','High Quality (320p)'),
'35'=>array('flv','High Quality (480p)'),
'36'=>array('3gp','High Quality'),
'37'=>array('mp4','High Quality (1080p)'),
// '43'=>array('webm',''),
// '44'=>array('webm',''),
// '45'=>array('webm',''),
);
foreach ($formats as $format => $meta) {
if (isset($foundArray[$format])) {
$videos[] = array('ext' => $meta[0], 'type' => $meta[1], 'url' => urldecode($foundArray[$format]));
}
}
return ($videos);
}
我正在解析YouTube(YT)的輸出,以便在我的網站上播放視頻。這個代碼一直工作到最近YT改變了他們的格式。理解和解析cURL響應
這個片段,我不理解的部分是從「的foreach($網址爲$ URL)」
我拿到他的分析數據來自捲曲請求返回。我寫了「GetBetween」fxn來選擇我想象中的相關代碼,但它仍然返回一個null數組。
有人可以解釋什麼是分配給「$ foundArray」。還有什麼是分配給「$ videos []」數組。 「$ meta [0]」和「$ meta [1]」是指數組的第一行,即「'5'=> array('flv','Low Quality')」或者前兩行陣列?
任何幫助你可以給予將不勝感激。 在此先感謝
這不是複雜的不混淆... –
拆開那條線,看看每個部分。 substr裏面有一個substr,裏面的一個返回是什麼?外面的人對此做了什麼? etc ... – sachleen
'echo()'和'print_r()'是你的朋友。如果在程序遍歷該函數時顯示字符串/數組/對象,則會更好地瞭解正在發生的事情以及原因 –