Поиск и замена текста с помощью PHPWord

Можно ли просто найти и заменить текст в документе Word с помощью PHPWord? Из того, что я видел, самое близкое, что вы можете получить, это просто ДОБАВИТЬ текст в раздел, и вы не можете манипулировать существующим текстом, кроме шрифта и т. Д. Если нет, есть ли что-нибудь бесплатное, что я могу использовать для этого?

3 ответа

Устанавливать

composer require phpoffice/phpword

Код PHP

include 'vendor/autoload.php';
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('test2.docx');
$templateProcessor->setValue('name', 'myvar');
$templateProcessor->saveAs('./xx.docx');

У моего test.docx просто есть слово: ${name}

Вы можете использовать setValue для достижения того, что вы ищете. Посмотрите на образцы.

Вот метод: https://github.com/PHPOffice/PHPWord/blob/e35838f7d7928b2308df3f7f0ef6d49bf96f453c/src/PhpWord/Template.php

Нет, PHPWord предназначен только для создания файлов docx.

В любом случае, файл docx - это просто набор XML-файлов в zip-контейнере. В общем, что вам нужно сделать, это:

  1. Переименуйте xxx.docx в xxx.zip
  2. Распакуйте во временную папку
  3. Во временную папку / слово читайте в document.xml, который содержит весь текст документа (кроме верхних и нижних колонтитулов)
  4. Замени то, что нужно заменить
  5. Сохраните document.xml
  6. Заархивируйте всю временную папку обратно в xxx.docx

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

Удачи, чтобы найти безопасный способ справиться с этим.

Другие вопросы по тегам