Я хотел бы загрузить файл XML через форму HTML. У меня есть файл .xml, но нет заголовка, например: <?xml version="1.0" encoding="ISO-8859-1"?>
Мой файл xml:
<wocand>
<roz>
<lp>1</lp>
<sign>I SA/Go 420/19</sign>
<date>08:30</date>
<simb>6550</simb>
<item>123</item>
</roz>
<roz>
<lp>2</lp>
<sign>I SA/Go 430/19</sign>
<date>09:30</date>
<simb>6750</simb>
<item>163</item>
</roz>
...
<wocand>
Моя форма html / php:
<form id="importFile" action="" method="post" enctype="multipart/form-data">
<input id="fileToImport" type="file" name="wocan" class="btn" accept="text/xml" required>
<input type="submit" class="btn btn-success" name="submit" value="submit">
</form>
<?php
if( isset( $_POST["submit"] ) )
{
if( isset( $_FILES['wocan'] ) && ( $_FILES['wocan']['error'] == UPLOAD_ERR_OK ) )
{
$file = simplexml_load_file( $_FILES['wocan']['tmp_name'] );
print_r( $file ); // <-- testing porpose
}
else
echo 'Error: '. $_FILES['wocan']['error'];
}
Iвключите error_reporting
ini_set('display_errors',1);
error_reporting(E_ALL);
И есть ошибка:
Warning: simplexml_load_file(): /tmp/php85UNT1:7: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xEA 0x64 0x7A 0x69 in /public_html/wocan/importWocan.php on line 41
Как я могу загрузить этот файл через HTML и прочитать его на PHP. Я попытался:
simplexml_load_file( $_FILES['wocan']['tmp_name']);
Я даже однажды отредактировал XML-файл и добавил первую строку <? xml version = "1.0" encoding = "ISO-8859-1"?>
(это не правильное кодирование, а w / e), и это сработало! Но пользователь не сможет добавить его вручную, кроме того, ему придется загружать около дюжины таких файлов в день, поэтому он не может редактировать этот файл перед загрузкой.
Таким образом, существует проблема с simplexml_load_file, потому что онневозможно загрузить файл 'xml' без кодировки.
Могу ли я прочитать этот файл по-другому? Или я могу добавить строку с кодировкой в этот файл в PHP? Может быть, мне нужно прочитать его как текст, но тогда я не знаю, как я мог бы сделать из него массив.