Ммм. Если вы можете прочитать его с помощью «fread
», я не вижу причин, по которым вы не можете прочитать ТОЧНЫЙ текст с «file_get_contents()
». Я использую это несколько раз и вспоминаю, что пробовал оба.
Что касается лучшей практики для fread
, то вам нужен размер файла, который вы можете получить из getallheaders ().
Итак, если вы все еще предпочитаете использовать 'fread
', вот код.
$data = fopen('php://input','rb');
$Headers = getallheaders();
$CLength = $Headers['Content-Length'];
$content = fread($data,$CLength);
$dom = new DOMDocument();
$dom->loadXML($content);
Приведенный выше код объясняется самостоятельно, поэтому нет необходимости в дополнительных пояснениях. Немного заметим, что если длина длиннее 8192 байт , содержимое будет обрезано. Так что вам лучше проверить длину чтения, чтобы увидеть, не обрезано ли оно. (Вам не нужно беспокоиться, если вы используете 'file_get_contents()
').
Надеюсь, это поможет