PHP + DOCX

DOCX формат это обычный ZIP архив, который можно открыть любым архиватором.

Структура docx

Структура docx

Все содержимое документы находиться в файле word/document.xml. Открываем файл в Word’e, добавляем пару переменных в документ, например: {NAME}, {SURNAME}. И сохраняем документ.

Для работы с Zip архивом в PHP я использую ZipArchive.

 

<?php
//Указываем путь до подготовленного документа
$docxFile = '/document.docx';

//Список параметров
$params = array(
    '{NAME}'    => 'Anatoliy',
    '{SURNAME}' => 'Skornyakov'
);

if (!file_exists($docxFile)) {
    die('File not found.');
}

$zip = new ZipArchive();

if (!$zip->open($docxFile)) {
    die('File not open.');
}

$documentXml = $zip->getFromName('word/document.xml');

//Заменяем все найденные переменные в файле на значения
$documentXml = str_replace(array_keys($params), array_values($params), $documentXml);

$zip->deleteName('word/document.xml');
$zip->addFromString('word/document.xml', $documentXml);

//Закрываем и сохраняем архив
$zip->close();