Проблем при preg|ereg replace + case-insensitive на cp1251 текст

Лого на PHPДо сега хиляди пъти съм заменял текст със друг , но този път ми възникна един проблем представен като пример:
$str=“Мартин Иванов Петров  | мартин иванов петров“;

$str=$str_replace(„/Мартин/i“,“MARTIN“,$str);

echo $str;
В този случай би трябвало да ми изведе

„MARTIN Иванов Петров  | MARTIN иванов петров“

Но ми извежда
„Мартин Иванов Петров  | MARTIN иванов петров“;

Има проблем с локала.

Такъв проблем имаше и някакъв грък писал запитване на php devs, но краен отговор не получи.  Както и да е.

Решението е ( за различните енкодинги друг локал се сетва):

<?php
setlocale(LC_ALL, ‘bg_BG’);
?>

PS: Същия проблем имаше един приятел когато искаше да направи cp1251 текст с големи букви и не ставаше.
Ето го решението:

echo strtoupper(„Преди setlocale-<i>Мартин Петров</i><br>“);
setlocale(LC_ALL,“bg_BG“);
echo strtoupper(„Преди setlocale-<b>Мартин Петров</b><br>“);

Резултат:

Преди SETLOCALE-Мартин Петров
ПРЕДИ SETLOCALE-МАРТИН ПЕТРОВ

Категория:

Logged in as {{omniform_current_user_display_name}}. Edit your profile. Log out? Required fields are marked *

Your email address will not be published. Required fields are marked *

Comments are closed.

You must be logged in to post a comment.