Чтение/Запись файла MS Word в PHP

Как парсер видит это?

Синтаксические правила для таких выражений в python называются «дисплеями». Вы можете найти определение здесь .

comprehension ::=  expression comp_for
comp_for      ::=  ["async"] "for" target_list "in" or_test [comp_iter]
comp_iter     ::=  comp_for | comp_if
comp_if       ::=  "if" expression_nocond [comp_iter]

элементы нового контейнера - это те элементы, которые будут получены при рассмотрении каждого из предложений for или if в блоке, вложенности слева направо и оценке выражения для производить элемент каждый раз, когда достигается самый внутренний блок.

Повторяемое выражение в крайнем левом предложении for вычисляется непосредственно во включающей области, а затем передается в качестве аргумента для имплицитно вложенной области. Последующие для предложений и любое условие фильтра в крайнем левом для предложения не могут быть оценены во включающей области видимости, поскольку они могут зависеть от значений, полученных из крайнего левого итерируемого.

blockquote>

Возьмем ваш пример:

[cell for row in table for cell in row]

Интерпретатор разобьет его следующим образом:

expression = "cell"
comp_for1  = "for row in table" + comp_for2
comp_for2  = "for cell in row"

Затем интерпретатор восстановит вложенный цикл в иерархии

. ]
comp_for1:
    comp_for2:
        expression

32
задан UnkwnTech 9 October 2008 в 18:09
поделиться

11 ответов

Чтение документов двоичного слова включило бы создание синтаксического анализатора согласно опубликованным спецификациям формата файла для формата DOC. Я думаю, что это не реальное выполнимое решение.

Вы могли использовать Microsoft Office форматы XML для чтения и записи файлов Word - это совместимо с версией 2003 и 2007 годов Word. Для чтения необходимо удостовериться, что документы Word сохранены в правильном формате (это назвало Word 2003 XML-Document в Word 2007). Для записи Вас просто должны следовать открыто доступной XML-схеме. Я никогда не использовал этот формат для записи документов подстанции от PHP, но я использую его для чтения в рабочем листе Excel (естественно сохраненный как XML-электронная-таблица 2003) и отображение его данных по веб-странице. Поскольку файлы являются явно данными XML, в которых это не проблема, чтобы перейти и выяснить, как извлечь данные, в которых Вы нуждаетесь.

другая опция - Word 2007 только опция (если бы форматы файлов OpenXML не установлены в Вашем Word 2003) - состояла бы в том, чтобы обратиться к OpenXML. Как databyss указал здесь , формат файла DOCX является просто архивом ZIP с включенными XML-файлами. Существует много ресурсов на MSDN относительно формата файла OpenXML, таким образом, необходимо смочь выяснить, как считать данные, которые Вы хотите. Запись будет намного более сложной, я думаю - она просто зависит от того, сколько времени Вы вложите капитал.

, Возможно, можно взглянуть на PHPExcel, который является библиотекой, которая в состоянии записать в файлы Excel 2007 и читать из файлов Excel 2007 с помощью стандарта OpenXML. Вы могли понять работу, включенную при попытке прочитать и записать документы OpenXML Word.

29
ответ дан 27 November 2019 в 20:12
поделиться

.rtf формат работал бы на Ваши цели? .rtf может легко быть преобразован в и от .doc формата, но он записан в простом тексте (со встроенными командами управления). Это - то, как я планирую интегрировать свое приложение с документами Word.

0
ответ дан 27 November 2019 в 20:12
поделиться

Office 2007 .docx должен быть возможным, так как это - стандарт XML. Word 2003, скорее всего, требует, чтобы COM читал, даже со стандартами, теперь опубликованными MS, так как те стандарты огромны. Я не видел многие библиотеки, записанные для соответствия им все же.

1
ответ дан 27 November 2019 в 20:12
поделиться

Я не знаю то, для чего Вы собираетесь использовать его, но мне была нужна поддержка .doc поисковой индексации; То, что я сделал, было использовать немного инструмента командной строки, названного "catdoc"; Это передает содержание документа Word простому тексту, таким образом, он может быть индексирован. Если необходимо продолжать форматировать и наполнить, это не инструмент.

1
ответ дан 27 November 2019 в 20:12
поделиться

Я не знаю о чтении собственных документов Word в PHP, но если Вы хотите записать документ Word в PHP, , WordprocessingML (иначе WordML) мог бы быть хорошим решением. Все, что необходимо сделать, создают XML-документ в правильном формате. Я верю Word 2003 и 2007 обеим поддержке WordML.

6
ответ дан 27 November 2019 в 20:12
поделиться

это работает с по сравнению с < офис 2007 и его чистый PHP, никакое дерьмо COM, все еще пробуя к рисунку 2007

<?php



/*****************************************************************
This approach uses detection of NUL (chr(00)) and end line (chr(13))
to decide where the text is:
- divide the file contents up by chr(13)
- reject any slices containing a NUL
- stitch the rest together again
- clean up with a regular expression
*****************************************************************/

function parseWord($userDoc) 
{
    $fileHandle = fopen($userDoc, "r");
    $line = @fread($fileHandle, filesize($userDoc));   
    $lines = explode(chr(0x0D),$line);
    $outtext = "";
    foreach($lines as $thisline)
      {
        $pos = strpos($thisline, chr(0x00));
        if (($pos !== FALSE)||(strlen($thisline)==0))
          {
          } else {
            $outtext .= $thisline." ";
          }
      }
     $outtext = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/\_\(\)]/","",$outtext);
    return $outtext;
} 

$userDoc = "cv.doc";

$text = parseWord($userDoc);
echo $text;


?>
18
ответ дан 27 November 2019 в 20:12
поделиться

2007 мог бы быть немного сложным также.

.docx формат является zip-файлом, который содержит несколько папок с другими файлами в них для форматирования и другого материала.

Переименовывают .docx файл к .zip, и Вы будете видеть то, что я имею в виду.

Поэтому, если можно работать в рамках zip-файлов в PHP, необходимо быть на правильном пути.

2
ответ дан 27 November 2019 в 20:12
поделиться

По всей вероятности Вы не сможете прочитать документы Word без COM.

Запись была покрыта этим тема

5
ответ дан 27 November 2019 в 20:12
поделиться

phpLiveDocx - это компонент Zend Framework, который может читать и записывать файлы DOC и DOCX в PHP в Linux, Windows и Mac.

См. Веб-сайт проекта по адресу:

http://www.phplivedocx.org

1
ответ дан 27 November 2019 в 20:12
поделиться

Вы можете использовать Antiword, это бесплатная программа для чтения MS Word для Linux и наиболее популярных ОС.

$document_file = 'c:\file.doc';
$text_from_doc = shell_exec('/usr/local/bin/antiword '.$document_file);
8
ответ дан 27 November 2019 в 20:12
поделиться

www.phplivedocx.org - это сервис на основе SOAP, который означает, что вам всегда нужно онлайн для тестирования файлов также не хватает примеров для его использования. Как ни странно, я обнаружил, что только через 2 дня загрузки (также требуется дополнительная структура zend), что это программа на основе SOAP (проклял меня !!!) ... Я думаю, что без COM это просто невозможно на сервере Linux, и единственная идея - изменить файл документации в другом используемом файле, который PHP может анализировать ...

2
ответ дан 27 November 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: