Регулярка не пашет из за кодировки, которая не хочет меняться через iconv

djdiplomat
На сайте с 05.08.2009
Offline
136
342

Из бд в uta-8 получаю строку типа:

$form_message = "Текстовое сообщение tel-125"

Из формы приходит переменная которая содержит "tel-125" в кодировке ASCII

в результате не пашет такая автозамена

$replace = "/".$current_name."/";
$current_value = "тут номер телефона";
$form_message = preg_replace($replace, $current_value, $form_message);

В результате выдает "Текстовое сообщение tel-125" вместо "Текстовое сообщение тут номер телефона"

Т.е если вместо $replace = "/".$current_name."/"; прописать $replace = "/tel-125/" - пашет, а пристыковывая переменную - нет((

скорее всего беда в том, что в разных кодировках. Но фигня в том, что

$current_name = iconv('ASCII', "UTF-8", $current_name);

или

$current_name = iconv('windows-1251', "UTF-8", $current_name);

Причем $code_bd = mb_detect_encoding($current_name); выдает ASCII. Т.е. даже не пытается перекодировать...

Не дают результата... что можно придумать?

[umka]
На сайте с 25.05.2008
Offline
456
#1

Используйте функцию str_replace()

Или приведите пример содержимого $current_name, с которым не срабатывает замена, там наверняка кривая регулярка.

Лог в помощь!
S
На сайте с 02.05.2014
Offline
61
#2

Из Вашего объяснения не видно, что именно содержится в переменной $current_name, может вы сначала присваиваете значение переменной $replace = "/".$current_name."/"; А потом присваиваете значение "tel-125" переменной $current_name? В результате переменная replace будет равна "//"

Как вариант, попробуйте при коннекте с бд явно указать кодировку. Например так:

mysqli_query($conn,"set character_set_client='utf8'");

mysqli_query($conn,"set character_set_results='utf8'");
mysqli_query($conn,"set collation_connection='utf8_general_ci'");

И еще вопрос, а сам php файл в какой кодировке?

djdiplomat
На сайте с 05.08.2009
Offline
136
#3

все. нашел ошибку. тупо невнимательность! вопрос снят

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#4

$current_name = $current_array[$keys[0]]; // имя текущего поля

$current_value = $current_array[$keys[0]]; // значение поля

Точно одинаковые нужны?

---------- Добавлено 18.03.2015 в 00:44 ----------

str_replace() пробовал - не катит

У вас там другие проблемы.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий