File() + POST или file_get_contents в array?

Discussion in 'PHP' started by Sn@k3, 15 Nov 2017.

  1. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    Всем прив, давно не юзал тему php, есть задача которую можно постичь поняв каким образом:
    1)либо загнать построчно содержимое удаленного файла функцией file_get_contents в массив, чтобы в последующем я мог вывести нужную мне строку.(но как бы эта функция и загоняет в строку собственно, в этом её смысл).
    2)либо воспользоваться функцией file(), используя при этом stream_context_create() и POST запрос.

    В обоих случаях читаем удаленный ресурс. и все полученное нужно в массиве.
    Основная работа парит мозги) либо старею) Есть мысли?
     
  2. spiner

    spiner Member

    Joined:
    8 Jul 2015
    Messages:
    74
    Likes Received:
    56
    Reputations:
    4
    для получения содержимого удаленного файла я всё же рекомендовал бы использовать cURL, для конвертации из строки в массив пользоваться функцией explode:
    Code:
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, 'http://site.com/needed_file.txt');
    $s = curl_exec($ch);
    curl_close($ch);
    $array = explode("\n", $s); //собственно сам массив
    
    код написан "на коленке", потому могут быть ошибки, но суть, думаю, понятна

    UPD. для POST запроса:
    Code:
    cuel_setopt($ch, CURLOPT_POST, 1);
    $data = array('param1' => 'value1', 'param2' => 'value2');
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
     
    xach and Sn@k3 like this.
  3. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    За курл спасибо, и спасибо за explode, решил им как раз, не стал всё переделывать, добавил explode с "\n" и вуаля.
    респектую.! вот пример, на коленке то же, что получилось в итоге и работает.
    Code:
    <?
    $context = stream_context_create(
    array(
            'http'=>array(
                            'header' => "User-Agent: Chrome 2/0\r\nConnection: Close\r\n\r\n",
                            'method' => 'POST',
                            'content' => 'search=MD123'     //самое важное        
                         )
        )
    );
    $contents = file_get_contents("http://URL.ru", false ,$context);
    $postroke = explode("\n", $contents);
    echo $postroke[123]; // вывод строку 123 с хтмл как есть
    
    ?>