Аргерих Л. О языке РНР. Часть 5. Страница 51


ereg('(["[:blank:]]+)[[:blank:]]+' . (["[ ■. blank: ]]+)[[: blank: ]]+' . (["[:blank: ]]+.)', Sstring, $regs);

В результате будут найдены строки, содержащие специальные символы и цифры, которые можно отфильтровать следующим образом:

eregC (["[ :blank: ][ -.digit :]]+)[[ blank: ]]+' . (["t:blank:][:digit:]]+) [[ :blank:]]+' . (["[:blank:][:digit:]]+)', {string, $reg$);

При необходимости фильтр можно расширить.

Дополнительно код примеров можно найти в главе 7. Получить полный спи­сок классов символов можно на странице руководства regex(7) любой систе­мы UNIX или Linux.

Выделение заглавными буквами

Если код полагается на встроенные функции РНР для выделения строк за­главными буквами, то сначала надо воспользоваться setlocale(). В противном случае РНР не распознает специальные символы (ж, 0, а) как входящие в на­бор символов, а потому не станет преобразовывать их к верхнему регистру:

<?php

/* Некоторые специальные, символы немецкого языка */ {string = ' а ц 6";

echo(ucwords({string)); // Дает 'а 0 о'

setlocale(LC_ALL, 'de_DE'); // Устанавливаем локаль для Германии1 echo(ucwords({string)): //Дает 'А 0 О' 1>

Время и дата в национальном формате

В РНР есть функции, с помощью которых получать информацию о

дате и времени в национальном формате пользователя.

Сначала с помощью setlocale() укажем локаль. Для этого применяется син­таксис:

string setlocale(rnix6G category, string locale)

Спецификатор category определяет область действия изменений локали. Она может принимать следующие значения (табл. 22.1):

Категория LC_TIME включает специфическое для локали форматирование да­ты и времени.

Значение, устанавливающее локаль, в некоторой мере зависит от реализа­ции. Строка может иметь вид cc_RR, где сс - код страны (country code), опре­деленный в стандарте ISO 639, a RR указывает регион (не совпадающий с ко­дом страны).

Некоторые основные языки используются во многих частях света, поэтому необходимо добавить конкретный регион. Хорошим примером служит анг­лийский язык. Его вездесущесть означает, что в системе могут быть установ­лены локали для Австралии, Ботсваны, Канады, Дании, Великобритании, Гонконга, Ирландии, Индии, Новой Зеландии, Флиппин, Сингапура, США, ЮАР и Зимбабве (Australia, Botswana, Canada, Denmark, Britain, Hong Kong, Ireland, India, New Zealand, Philippines, Singapore, USA, South Africa, Zimbabwe).

Как правило, также имеется файл, в котором определены псевдонимы язы­ков, благодаря чему, например, локаль для Дании можно задать как danish, dansk или da_DK. Псевдонимы локалей нечувствительны к регистру, поэтому можно писать Danish, DANISH или DaNiSh. Напротив, сама локаль чувствитель­на к регистру и должна быть задана как da_DK, а не da_dk.