用PHP中的WGET url_encode?

时间:2016-07-14 01:33:15

标签: php ajax web wget m3u8

这个问题是我之前提到的另一个话题,没有人能够提供帮助:

here

所以现在我试图通过PHP WGET相同的网站,但我相信我需要对网址进行编码。当我尝试以下命令时,没有任何内容被下载:

<?php
    exec("wget --header='Host: www.glturk.com' http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR");
?>

我收到一个下载的空文件:&#39; ajax.aspx-stream = live&#39;,这表明网址可能无法正常读取?

如何编码该链接?我也试过了:

<?php
    $encoded = urlencode("http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR");
    exec("wget --header='Host: www.glturk.com' $encoded");
?>

有什么想法吗?我一直在下载空文件?谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

curl

$url = "http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR";
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch); 
echo $output;

答案 1 :(得分:0)

字符?&对shell有特殊含义,因此您需要引用该网址。

exec("wget --header='Host: www.glturk.com' 'http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR'");

转义shell参数的正确函数是escapeshellarg,而不是urlencode。所以你也可以这样做:

$encoded = escapeshellarg("http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR");
exec("wget --header='Host: www.glturk.com' $encoded");