Проблема со smarty заменяет ANS ISO-8859-1 на php 7.2 и немецкие умлауты - PullRequest
2 голосов
/ 10 мая 2019

В моем шаблоне есть функция замены, ничего особенного.

{$description:replace:'http://www.youtube':'https://www.youtube'}

$ description может содержать символы немецкого языка Umlauts и ISO-8859-1. На php <7.1 это работает. Когда я переключаюсь на php 7.1 или 7.2 и $ description содержит Umlauts, функция ничего не выводит (просто ничего). </p>

То же самое происходит с той функцией, которая работает на php <7.1: </p>

{assign var="title" value=mb_convert_encoding($item->title, "ISO-8859-1", "UTF-8")}
{$title|replace:" ? ":" - "}

Почему у smarty возникают проблемы с заменой строки на Umlauts и ISO-8859-1 charas на php выше 7.0?

1 Ответ

0 голосов
/ 14 мая 2019

Технически это не ответ, но мне нужно больше возможностей, чем поддерживает комментарий.

Один из способов отладки подобных проблем - вставка отладочных сообщений в код библиотеки. Я бы начал с modifier.replace.php , который принимает решение назвать Smarty как собственный mb_str_replace или собственный, не многобайтово-безопасный str_replace. Решение основано на существовании функции mb_get_info , которая, как я полагаю, сводится к тому, есть ли у вас поддержка mbstring, скомпилированная в PHP (я уверен, что вы это делаете).

Далее, я бы посмотрел на basecase в mb_str_replace, чтобы увидеть, какие аргументы он получает и что он возвращает.

Удачи!

...