середу, квітня 22, 2009

Регулярные выражения php

regexpЯ надеюсь все знают, что такое регулярные выражения, публикую полезную таблицу и полезные примеры для web-разработчиков:


Ниже приведена таблица паттернов и их соответствий:

/pattern/Соответствие
x?ноль или один символ 'x'
x*ноль или больше символов 'x'
x+один или больше символов 'x'
.*ноль или больше любых символов
.+один или больше любых символов
{m}M символов
[]символы, заключенные в []
[^]символы, кроме заключенных в []
[0-9]любая цифра от '0' до '9'
[a-z]любая буква от 'a' до 'z'
[^0-9]любой символ, не находящийся между '0' и '9'
[^a-z]любой символ, не находящийся между 'a' и 'z'
/^.../первый символ в строке
/...$/последний символ в строке
\dодна цифра, то же, что и [0-9]
\d+одна или больше цифр, то же, что и [0-9]+
\Dодна не-цифра, то же, что и [0-9]
\D+одна или больше не-цифр, то же, что и [0-9]+
\wодин alphanumeric символ (латинская буква или цифра), то же, что и [a-zA-Z0-9]
\w+один или больше alphanumeric-символов, то же, что и [a-zA-Z0-9]+
\Wодин не-alphanumeric символ, то же что и [^a-zA-Z0-9]
\W+один или больше не-alphanumeric символ, то же что и [^a-zA-Z0-9]+
\sодин space символ (пробел, табуляция, новая строка), то же что и [\n\t\r\f]
\s+один или больше space символов, то же что и [\n\t\r\f]
\Sодин не-space символ, то же что и [^\n\t\r\f]
\S+один или больше не-space символов, то же что и [^\n\t\r\f]+
a|b|c'a' или 'b' или 'c'
abcподстрока "abc"
(pattern)() запоминает группу символов, присваивая их переменным $1, $2 и т.д. См. примеры.
/pattern/iигнорировать регистр букв

Это, конечно, не понять с первого раза, поэтому вот примеры:

ПримерОписание
$str=~/perl/;проверяет, есть ли в строке $str подстрока "perl"
$str=~/^perl/;проверяет, начинается ли строка с подстроки "perl"
$str=~/perl$/;проверяет, заканчивается ли строка на подстроку "perl"
$str=~/c|g|i/;проверяет, содержит ли строка символ 'c' или 'g' или 'i'
$str=~/cg{2,4}i/;проверяет, содержит ли строка символ 'c', следующие сразу за ним 2-4 символа 'g', за которыми следует символ 'i'
$str=~/cg*i/;проверяет, содержит ли строка символ 'c', слудующие за ним 0 или больше символа 'g', за которыми следует символ 'i'
$str=~/c..i/;проверяет, содержит ли строка символ 'c', и символ 'i', разделенные двумя любыми буквами
$str=~/[cgi]/;проверяет, содержит ли строка один из символов 'c', 'g' или 'i'
$str=~/\d/;проверяет, содержит ли строка цифру
$str=~/\W/;проверяет, содержит ли строка символы, не являющиеся буквами латинского алфавита и цифрами

Использование регулярных выражений:

1) Иногда требуется узнать расширение файла по его имени. Элементарное регулярное выражение выбирает все символы после последней точки;
# Пример в  PHP

$filename = '/index.php';

$out = array();

preg_match('/\S+\.(\S+)$/', $filename, $out);

# $out[1] будет содержать расширение файла - 'php'

2) Заменяет английские закрывающие кавычки-«лапки» на русские «елочки»;
# Пример в  PHP

$text = preg_replace('/(\S)"([ .,?!])/', '$1»$2', $text);

3) Простая проверка правильности введенного адреса электронной почты;
# Пример в  PHP

$is_ok = preg_match('/^(.+@.+\..+|)$/', $text);
4) Находит в тексте и автоматически преобразует адреса, начинающиеся с ftp://, http://, https:// в активные ссылки;
# Пример в  PHP

$text = preg_replace("#(https?|ftp)://\S+[^\s.,>)\];'\&
quot;!?]#", '\\0', $text);

4 коментарі:

Що таке база данних?

База данних — це спеціальна система зберігання, організації та пошуку інформації. Вона містить дані у вигляді таблиць, записів та інших стру...