PHP XML fgets и длинные строки

263
15 июля 2017, 09:24

Задача: Получить ответ от сервера после POST запроса XML.

Запрашиваем следующим образом:

$_SESSION['echo'] = '';
header('Content-Type: text/html; charset=UTF-8');
$sock = fsockopen($host, $port);
fputs($sock, $post);
echo "<pre>";
while (!feof($sock)) {
    $echo = htmlspecialchars(fgets($sock));
    echo $echo;
    $_SESSION['echo'] .= $echo;
}
echo "</pre>";
fclose($sock);

Пока все хорошо, данные получаем. Но размер данных - не известен (если быть совсем точным он зависит от того что мы отправляем на сервер, и может быть как 1-2 кб, так и доходить до мб).

При получении длинного потока данных строки бьются:

хидеры
7cb8
строка раз
bff8
строка два
5ffd0
строка три
10a7b
строка четыре

и дальше в том же духе.

Вопрос вот в чем:
Как избавиться от этих шестнадцатеричных значений, которые вклиниваются между строк?
Можно ли получить очень длинную строку, без её разбития на несколько строк?

P.s. Да, cUrl-ом было бы удобнее, только сервер выдающий информацию не позволяет. Получаем XML в виде одной строки, длинной и страшной. Иногда еще информация ответа немного теряется, но есть подозрение что это некоторые проблемы интернета.

Answer 1

А почему не так?

$sock = fsockopen($host, $port);
fputs($sock, $post);
$content = "";
while (!feof($sock)) {
    $content .= fgets($sock);
}
echo htmlspecialchars($content);
fclose($sock);
READ ALSO
PHP достать 2 букву со строки

PHP достать 2 букву со строки

Есть строка "abc"

248
PHP Notice: Undefined offset, Undefined variable

PHP Notice: Undefined offset, Undefined variable

Купил скрипт и расстроился - все время ругаемся

288
PHP стриминг большого аудиофайла

PHP стриминг большого аудиофайла

Ситуация такая: есть бесконечно выполняющийся php-скрипт, генерирующий большой аудиофайл путём склейки файлов из указанной папки (разумеется,...

198
Как правильно разместить пакет на packagist?

Как правильно разместить пакет на packagist?

Собственно не нашел на русском документацииМожет у кого есть и поделитесь

267