При работе с библиотекой PHPWord, которая предназначена для работы с файлами docx средствами php, может возникнуть проблема с кириллицей. Все дело в функции utf8_encode(), которая применяется к строкам, и так находящимся в кодировке в UTF8.
Это старое решение, и сейчас, на сколько мне известно, проблема давно устранена.
Поэтому используйте просто современную версию библиотеки: https://github.com/PHPOffice/PHPWord
Если у вас остались с ней проблемы напишите в комментариях - я дополню информацию.
Оставлю старое решение здесь для истории:
Простейший способ решить данную проблему - отредактировать исходники библиотеки.
Это конечно самый последний костыль, который хотелось бы делать но..
В файле Shared/String.php
Найти в 130 строке:
public static function IsUTF8($value = '') { return utf8_encode(utf8_decode($value)) === $value; }
Заменить на:
public static function IsUTF8($value = '') { return mb_check_encoding($value, "UTF-8"); }
Также следует найти и удалить автозаменой все упоминания utf8_encode в коде phpword
Их может быть много, так что просто заменяем utf8_encode на пустую строку.
У нас получается вполне работоспособный код, хотя и слегка избыточный. Например:
//было: $linkSrc = utf8_encode($linkSrc); //стало: $linkSrc = ($linkSrc);
Также следует позаботиться о том, чтобы в функции phpword передавались только строки в кодировке utf8
Это все. Теперь кириллица будет работать нормально.
Найти документацию по phpword можно здесь:
http://phpword.readthedocs.io/en/latest/ (en)
http://docs.mirocow.com/doku.php?id=php:docx_doc (ru)