загрузить XML-файл без кодировки - PullRequest
0 голосов
/ 02 октября 2019

Я хотел бы загрузить файл 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? Может быть, мне нужно прочитать его как текст, но тогда я не знаю, как я мог бы сделать из него массив.

1 Ответ

0 голосов
/ 03 октября 2019

Спасибо, что держите меня в курсе.

Файл .xml был закодирован в неизвестной кодировке ANSI. После действия «сохранить как» (кодировка UTF8) импорт и чтение файла выполняются правильно. Может быть, это кому-нибудь поможет.

Однако я не смог изменить кодировку файла в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...