Расширение регулярных выражений POSIX
Функции работы с данными
🕛 01.11.2006, 13:20
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] [ВДГЪь] !