Я хотел бы перевести дату с русского языка, а затем изменить его формат. Когда я использую str_replace('Сентября', 'September', $date);
, это не сработает, потому что, как показывает функция даты, вызывая ошибку, содержащую \xD1\x81\xD0\xB5\xD0\xBD\xD1\x82\xD1\x8F\xD0\xB1\xD1\x80\xD1\x8F
PHP UTF-16 символов и str_replace
Строка не в UTF-8, а в UTF-16. Как преобразовать строку в UTF-8 без использования mb_convert_encoding, который мой хост не поддерживает? Я попытался iconv('UTF-16', 'UTF-8', $date);
также с LE BE, но и не помогли
Выход ошибки выглядит следующим образом
Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (1 сентября 2016 00:00)
DateTime->__construct('1 \xD1\x81\xD0\xB5\xD0\xBD\xD1\x82\xD1\x8F\xD0\xB1\xD1...', Object(DateTimeZone)) #
это работает, но почему оригинала нет? :) – Jord123
str_replace не работает со смешанными кодировками. Но есть еще способ. Поэтому я собираюсь отредактировать свой ответ и добавить дополнительный метод. – DragonSpirit
Более точно 'str_replace' не * заботится * о кодировках - он работает с байтами. Если совпадают байты, 'str_replace' соответствует. (Если вы забудете о персонажах и подумаете о строках в PHP, как о простом байке, то много чего имеет смысл.) –