Проблем при 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-МАРТИН ПЕТРОВ

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Вашият коментар

Вашият email адрес няма да бъде публикуван Задължителните полета са отбелязани с *