2013-11-25 4 views
8

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

ответ

3

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

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

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

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

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

4

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

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

+0

Есть ли способ заменить заполнители в ссылке? Я пытался это сделать, но не работает с setValue() – Vishnu