2016-07-14 2 views
0

Этот вопрос следующий другую тему я спросил ранее, что никто не смог помочь:url_encode с WGET в PHP?

Retrieving M3U8 via PHP vs. via Website gives different session variables

Так что теперь я пытаюсь WGET тот же сайт с помощью PHP, но я полагаю, что нужно закодировать url. Когда я пытаюсь следующую команду, ничто не загружен:

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

я получаю пустой файл загрузки: «ajax.aspx-поток = живой», который предполагает, может быть URL не читается правильно?

Как я могу кодировать эту ссылку? Я также пробовал:

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

Любая идея? Я все время загружаю пустые файлы? Спасибо за вашу помощь!

+0

я, как некоторые думают, что они не хотят, чтобы вы очищая их содержание –

ответ

0

локон

$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; 
+0

Благодаря спариванию, это работает, но выведени m3u8 еще раз недействительный - что то, что мой предыдущий вопрос был в моей первой после. Я не знаю, почему это происходит ... Я могу получить m3u8 в порядке, но это не сработает ... Если я запустил [link] http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint = TRT1_LR [/ link] напрямую, результирующий m3u8 работает отлично .. –

0

Символы ? и & имеют особое значение для оболочки, так что вам нужно процитировать URL.

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

Правильная функция для экранирования аргументов оболочки является 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"); 
+0

Спасибо, что это работает, но вывод m3u8 еще раз недействителен - вот что мой предыдущий вопрос был в моем первоначальном сообщении. Я не знаю, почему это происходит ... Я могу получить m3u8 в порядке, но он не будет работать ... Если я запустил ссылку http://www.glturk.com/ajax.aspx?stream=live&type=free&ppoint=TRT1_LR напрямую, результат m3u8 отлично работает. –

+0

Я просто прокомментировал в другом вопросе, что я не могу воспроизвести вашу проблему с возвращенным URL-адресом. – Barmar