Настройка локали
При изменении регистра русских букв может возникнуть проблема. Чтобы ее избежать, необходимо правильно настроить локаль. Локалью называют сово- купность локальных настроек системы.
Для установки локали используется функция setlocale(). Функция имеет следующий формат:
setlocale(<Категория>, <Локаль>);
Параметр <Категория> может принимать следующие значения:
? LC_ALL — устанавливает локаль для всех режимов;
? LC_COLLATE — для сравнения строк;
? LC_CTYPE — для перевода символов в нижний или верхний регистр;
? LC_MONETARY — для отображения денежных единиц;
? LC_NUMERIC — для форматирования дробных чисел;
? LC_TIME — для форматирования вывода даты и времени.
Например:
$str = "очень длинная строка";
setlocale(LC_CTYPE, "ru_RU.CP1251"); //
echo strtoupper($str); // Выведет: ОЧЕНЬ ДЛИННАЯ СТРОКА
Пример для кодировки UTF-8:
setlocale(LC_CTYPE, ‘ru_RU.UTF-8’); // в UNIX setlocale(LC_ALL, ‘Russian_Russia.65001’); // в Windows Можно указать сразу несколько локалей через запятую:
setlocale(LC_ALL, "ru_RU.CP1251", "Russian_Russia.1251");
setlocale(LC_ALL, ‘ru_RU.UTF-8’, ‘Russian_Russia.65001’);
О БРАТИТЕ ВНИМ АНИЕ
В операционной системе Windows нельзя настроить категорию LC_CTYPE для кодировки UTF-8. Это связано с особенностями операционной системы Windows. Кроме того, в PHP 6 функция setlocale() помечена как уста- ревшая.
5.15.3. Функции для работы с символами
? chr(<Код символа>) возвращает символ по указанному коду:
echo chr(81); // Выведет: Q
? ord(<Символ>) возвращает код указанного символа:
echo ord("Q"); // Выведет: 81
5.15.4. Поиск и замена в строке
? strpos() ищет подстроку в строке. Возвращает номер позиции, с которой начинается вхождение подстроки в строку. Если подстрока в строку не входит, то функция возвращает false. Функция зависит от регистра сим- волов. Имеет следующий формат:
strpos(<Строка>, <Подстрока>, [<Начальная позиция поиска>]);
Если начальная позиция не указана, то поиск будет производиться с на-
чала строки:
if (strpos("Привет", "При") !== false) echo "Найдено";
// Выведет: Найдено
else echo "Не найдено";
? str_replace() производит замену всех вхождений подстроки в строку на другую подстроку и возвращает результат в виде новой строки. Функция
не изменяет исходную строку и зависит от регистра символов. Имеет сле-
дующий формат:
str_replace(<Подстрока для замены>, <Новая подстрока>, <Строка>, [<Количество произведенных замен>]);
Если в необязательном четвертом параметре указать переменную, то в ней будет сохранено количество произведенных замен. Например:
$str = ‘Привет, Петя’;
$count = 0;
$str = str_replace(‘Петя’, ‘Вася’, $str, $count);
echo $str; // Выведет: Привет, Вася
echo $count; // Выведет: 1
В качестве параметра можно также передать массив. Например:
$arr = array(‘!’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’, ‘&’, ‘*’,
‘(‘, ‘)’, ‘_’, ‘+’, ‘=’, ‘.’);
echo str_replace($arr, ”, ‘Текст !@#$%^&*()_+=. текст’);
// Выведет: Текст текст
Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)