Загрузите .docx и проанализируйте его в массив, используя PHP - PullRequest
0 голосов
/ 07 января 2019

Я хочу, чтобы .docx стал ассоциативным массивом PHP, содержащим тип элемента и содержимое элемента, что-то вроде этого:

$my_document = array(
    array(
        'type' => 'h1',
        'content' => 'Hello world'
    ),
    array(
        'type' => 'p',
        'content' => 'I am a paragraph'
    )
);

Я пытался использовать PHPWord , но безуспешно. Использование кода из примера позволяет мне загрузить файл .docx, но я могу записать его только в файлы HTML, PDF или RTF.

Кажется, нет никакого способа просто вернуть содержимое в некотором ассоциативном массиве.

Загрузите .docx и сохраните его как HTML:

$source =  "word.docx";
echo date('H:i:s'), " Reading contents from `{$source}`";

$phpWord = \PhpOffice\PhpWord\IOFactory::load($source);
$writer = new \PhpOffice\PhpWord\Writer\HTML($phpWord);
$writer->save("my_document.html");

Приведенный выше пример работает, но, как уже было сказано, я получаю файл HTML на сервере, а не массив в памяти.


Есть ли способ использовать PHPWord или другую библиотеку для загрузки файла .docx и возврата его структуры в виде ассоциативного массива?


Другие мысли: я смотрел на загрузку сохраненного HTML-файла как DOMDocument и получение содержимого оттуда, но это кажется неэффективным.

...