В настоящее время я пытаюсь работать с файлами docx, используя библиотеку PHPWord и ее систему шаблонов. Я нашел и обновил чей-то (не помню имя, но это не важно) путь к этой библиотеке, которая может работать с таблицами (реплицировать ее строки, а затем использовать стандартную функцию setValue() из PHPWord для каждой строки).
Если я создаю свой собственный документ, данные в xml имеют нормальную структуру, поэтому заменяемая переменная ${variable} находится в собственном теге, например:
<w:tbl>
<w:tr>
...
${variable}
</w:tr>
</w:tbl>
Я упростил код, в реальном коде есть ряд других тегов, описывающих размеры, стили и т. д.
Моя проблема в том, что мне приходится обрабатывать документы от других людей, где мне запрещено вносить большие изменения, я получаю документ, где в какой-то момент это таблица с одной пустой строкой. Я добавляю переменные ${variable} и запускаю их через PHPWord. Проблема в том, что он терпит неудачу. Проведя небольшое исследование, я обнаружил, что исходный XML выглядит так:
....
...
${va
...
riab
...
le}
....
(опять же сильно упрощено, но вы поняли)
Эта структура является проблемой для меня, потому что функция клонирования строк использует для работы strpos(), substr() и регулярные выражения и не работает с этой структурой (и я не могу представить себе элегантный способ сделать это так).
Итак, вопрос: кто-нибудь знает, почему docx это делает и как его предотвратить? Я ищу решение через слово, а не PHP (мне нужны текущие функции, чтобы они работали без особого редактирования)