Установил модуль PHPWord для генерации текстовых документов. Нашел инструкцию, как подтянуть к нему шаблон .docx с целью замены значений, ибо заново строить такой текстовый файл та еще затея. В моей версии скрипта, TemplateProcessor отвечает за замену текста в документе формата ${Test} на свои переменные свойством:
$_doc->setValue('date_end', $dateEnd);
Вот сама функция "setValue":
public function setValue($macro, $replace, $limit = self::MAXIMUM_REPLACEMENTS_DEFAULT) { foreach ($this->tempDocumentHeaders as $index => $headerXML) { $this->tempDocumentHeaders[$index] = $this->setValueForPart($this->tempDocumentHeaders[$index], $macro, $replace, $limit); }
if (!String::isUTF8($replace)) { $replace = utf8_encode($replace); }
// Note: we can't use the same function for both cases here, because of performance considerations. if (self::MAXIMUM_REPLACEMENTS_DEFAULT === $limit) { return str_replace($search, $replace, $documentPartXML); } else { $regExpDelim = '/'; $escapedSearch = preg_quote($search, $regExpDelim); return preg_replace("{$regExpDelim}{$escapedSearch}{$regExpDelim}u", $replace, $documentPartXML, $limit); } }
Все страницы у меня в кодировке cp-1251. Так вот, при формировании документа из шаблона, вместо русских символов кракозябры:Как решить проблему с кодировкой, или копаю во все не туда?
Дополнен 10 месяцев назад
Решил проблему. Во второй функции необходимо заменить