Учебник по основам PHP




Расширение регулярных выражений POSIX


PHP использует расширение регулярных выражений POSIX, определенное спецификацией POSIX 1003.2. Эти регулярные выражения значительно уступают PCRE. Все эти функции принимают в качестве своего первого аргумента регулярное выражение (без ограничителей и модификаторов).

ereg <"'abc". $stnng).
/* Возвращает TRUE, если Istnng содержит
фрагмент "abc". */ егеУ ("*abc". Sstring);
/* Возвращает TRUE, если Sstring
начинается с "abc". */
ereg ("abc$". Sstring):
/* Возвращает TRUE, если Sstring
заканчивается на "abc" */
eregi ("(ozilla [23]JMSIE.3)".
$HTTP_USER_AGLNT); /* возвращает TRUE,
если браузер клиента
Netscape 2. 3 или MSIE 3. */
ereg ("([[.alnum:]]+) ([[.alnum ]]+)
([[ :alnum:]]+)". Sstring.Sregs).
/* Заносит три слова, разделенных
пробелами в $regs[l].
Sregs[2]и$regs[3].*/
$stnng = ereg_replace ("*". "<BR>". Sstring);
/* вставляет тег <BR> в начало строки
Sstring */ Jstring = ereg_replace
("$". "<BR>". Sstnng). /* вставляет тег
<BR> в конец строки Sstnng. */
Sstring •= ereg_replace ("\n". "". Sstnngj.
/* вырезает символы перехода на
новую строку в Sstring. */
Расширение регулярных выражений POSIX

ereg

Регулярный поиск

int ereg (string pattern, string string [, array regs])

Возвращает TRUE, если в строке string находится фрагмент, подходящий шаблону pattern, иначе — FALSE. В случае успеха массив regs заполняется совладениями с нодшаблонами. Элемент [0] массива regs содержит совпадение с полным шаблоном, а все последующие (1-9) — совпадения с подшаблонами. Массив regs всегда будет иметь 10 элементов, и это не зависит от числа подшаблонов.

Следующий пример печатает дату формата ISO (YYYY-MM-DD) в виде DD.MM.YYYY:

Sdate = "1982-11-29",
if (ereg
("([0-9]{4})-([0-9]{1.2})-([0-9]{1.2})",
$date. Sregs»
{ echo "$regs[3j.$regs[2].$regs[l]": } else f
echo "Дата в неправильной формате: $date". }

См. также: eregi(), ereg_replace(), eregi_replace().

eregi

Нечувствительный к регистру регулярный поиск

int eregi (string pattern, string string [, array regs])

Функция подобна ereg(), за исключением того, что она нечувствительна к регистру буквенных символов при поиске фрагментов совпадения с шаблоном.

См. также: ereg(), ereg_replace(). eregi_replace().

ereg_replace

Регулярная замена

string ereg_replace (string pattern, string replacement, string string)

В строке string ищутся фрагменты совпадения с pattern и возвращается строка string, в которой фрагменты совпадения (если таковые нашлись) заменены на replacement. Допускается использовать ссылки (0-9) на совпадения с подшаблонами. Ссылка \\0 означает совпадение с целым шаблоном.

tstring - "This is a test".
echo ereg_repl асе ("( )
is". '\\lwas". $st'~ing):

Однако если replacement содержит целочисленное значение, оно будет воспринято как код символа заместителя.

Jstrirg = "В строке четыре слова";
echo ereg_replасе('четыре', 4. Sstnng):
/* выводит: В строке слова */ echo ereg_replace
( 'четыре'. '4'. Sstnng):
/* выводит: В строке 4 слова */

См. также: ereg(), eregi(), eregi_replace().

eregi_replace

Нечувствительная к регистру регулярная замена

string eregi_replace (string pattern, string replacement, string string)

Функция подобна ereg_replace(), за исключенном того, что она нечувствительна к регистру буквенных символов при поиске фрагментов совпадения с шаблоном.

См. также: ereg(), eregi(), ereg_replace().

split

Нарезка в массив регулярным выражением

array split (string pattern, string string [, int limit])

Возвращает массив частей строки string, на которые она была разделена последовательностями, совпадающими с регулярным выражением pattern. В аргументе можно указать максимальное число частей, возвращаемое в массиве; если таких частей обнаружилось больше, последний элемент массива будет содержать оставшуюся неразделенной часть строки string. При ошибке возвращается FALSE.

// выделить четыре первых поля
строки файла /etc/passwd
$pasc,wd_list = split (":". $passwd_line. 5):

//разделить на переменные строку даты-времени
list ($month. $day. Syear, Shour. Srmnutes, Sseconds)
= split ('[/. -]'. "04/30/1973 14 23 88").

Заметьте, иногда проще использовать функцию explodeO. См. также: splitiO, explodeO, implodeO.

spliti

Нечувствительный к регистру аналог split()

array spliti (string pattern, string string [, int limit])

Функция подобна splitO, за исключением того, что она нечувствительна к регистру буквенных символов при поиске фрагментов совпадения с шаблоном.

См. также: split(), explode(), implode().

sql_ regcase

Игнорирование регистра для SQL выражений

string sql_regcase (string string)

Каждый буквенный символ строки string превращается в пару символов в верхнем и нижнем регистре, заключенную в квадратные скоб-ч ки. Используется для преобразования регулярных выражений для функций, чувствительных к регистру, при необходимости его игнорирования.

Например, это позволяет при указании в SQL выражениях игнорировать регистр строки поиска. Например, выражение: SELECT * FROM tbl WHERE fieldl='Abc' часто чувствительно к регистру, а его аналогия: SELECT * FROM tbl WHERE fieldl»1 [Aa][Bb][Cc]' - нет. Но для многих СУБД поиск и так нечувствителен к регистру, например: SELECT * FROM tbl WHERE fieldl LIKE 'Abc'

pcho sql_regcase ("Fv Жъ '");
//выводит: [Ff][Vv] [ВДГЪь] !









Начало    Назад    




Книжный магазин