Как извлечь текст из Word do c / docx и выполнить logi c, используя PHP - PullRequest
0 голосов
/ 07 февраля 2020

Моя цель - прочитать загруженный документ и извлечь некоторые значения, такие как float "1.20, 3.9", текст. Я пробовал несколько библиотек, но, похоже, ничего не получилось.

Кроме того, в большинстве случаев файлы будут содержать таблицы, подобные структуре, которая также выплевывает вертикальные линии границ.

Что приходит на ум - это логика логического разбора с тяжелым регулярным выражением c ...

Кто-нибудь с предложенным решением?

1 Ответ

0 голосов
/ 07 февраля 2020

Для файла docx вы можете попробовать это

 $zip = zip_open($file);

                if (!$zip || is_numeric($zip)) return false;

                while ($zip_entry = zip_read($zip)) {

                    if (zip_entry_open($zip, $zip_entry) == FALSE) continue;

                    if (zip_entry_name($zip_entry) != "word/document.xml") continue;

                    $content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
                    zip_entry_close($zip_entry);
                } // end while

                zip_close($zip);

. Он извлечет документ DOCX в текст, потому что вы не можете получить только с помощью file_get_content из php

* 1006. * И для файла DO C
if (($fh = fopen($file, 'rb')) !== false) {
                $headers = fread($fh, 0xA00);

                // read doc from 0 to 255 characters
                $n1 = (ord($headers[0x21C]) - 1);

                // read doc from 256 to 63743 characters
                $n2 = ((ord($headers[0x21D]) - 8) * 256);

                // read doc from 63744 to 16775423 characters
                $n3 = ((ord($headers[0x21E]) * 256) * 256);

                //read doc from 16775424 to 4294965504 characters
                $n4 = (((ord($headers[0x21F]) * 256) * 256) * 256);

                // Total length of text in the document
                $textLength = ($n1 + $n2 + $n3 + $n4);
                ini_set('memory_limit', '-1');
                $extracted_plaintext = fread($fh, $textLength);
            }

После того, как вы преобразуете его в текст, время, чтобы сканировать нужный текст, используя REGEX

...