Поиск и замена текста с помощью 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 для достижения того, что вы ищете. Посмотрите на образцы.
Нет, PHPWord предназначен только для создания файлов docx.
В любом случае, файл docx - это просто набор XML-файлов в zip-контейнере. В общем, что вам нужно сделать, это:
- Переименуйте xxx.docx в xxx.zip
- Распакуйте во временную папку
- Во временную папку / слово читайте в document.xml, который содержит весь текст документа (кроме верхних и нижних колонтитулов)
- Замени то, что нужно заменить
- Сохраните document.xml
- Заархивируйте всю временную папку обратно в xxx.docx
Помните, что Word имеет тенденцию разбивать слова на несколько разделов, в зависимости от того, что было сделано с документом в точке сохранения. В середине любого слова могут быть закладки, языковые изменения, проверка орфографии или теги форматирования символов.
Удачи, чтобы найти безопасный способ справиться с этим.