Обзор регулярных выражений

Найти текст, заключенный в какой-то тег и заменить его на другой тег Например: … заменить аналогично на … в HTML-файле:

preg_replace("!<title>(.*?)</title>!si","<МОЙ_ТЕГ>\\1</МОЙ_ТЕГ>",$string);

Взять то, что находится между тегами

if (preg_match('|<title.*?>(.*)</title>|sei', $str, $arr)) $title = $arr[1];   else $title='';

Получить расширение файла

preg_replace("/.*?\./", '', 'photo.jpg');

Проверяем, является ли переменная числом

if (!preg_match("|^[\d]+$|", $var))

Запретим пользователю использовать в своем имени любые символы, кроме букв русского и латинского алфавита, знака «_» (подчерк), пробела и цифр:

if (preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/",$username)) {
        echo "invalid username";
        exit;
}

Для поля ввода адреса e-mail добавим в список разрешенных символов знаки «@» и «.» и «-«, иначе пользователь не сможет корректно ввести адрес. Зато уберем русские буквы и пробел:

if (preg_match("/[^(\w)|(\@)|(\.)|(\-)]/",$usermail)) {
        echo "invalid mail";
        exit;
}

Проверка на число

if(preg_match('/^\d+$/', $var)) echo $var;

Парсер всех внешних и внутренних ссылок со страницы В массиве $vnut только ссылки внутренние, в массиве $vnech только внешние ссылки.

$html=file_get_contents ('http://webersoft.ru');
$url='webersoft.ru';
$vnut=array();
$vnech=array();
preg_match_all('~<a [^<>]*href=[\'"]([^\'"]+)[\'"][^<>]*>(((?!~si',$html, $matches);
foreach ($matches[1] as $val) {
if (!preg_match("~^[^=]+://~", $val) || preg_match("~^[^://]+://(www\.)?".$url."~i", $val)) { $vnut[]=$val; }
else $vnech[]=$val;
}
$vnut=array_unique ($vnut);
$vnech=array_unique ($vnech);
print_r ($vnut);
print_r ($vnech);

Конвертор HTML в текст

$search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезает javascript
                 "'<[\/\!]*?[^<>]*?>'si",           // Вырезает HTML-теги
                 "'([\r\n])[\s]+'",                 // Вырезает пробельные символы
                 "'&(quot|#34);'i",                 // Заменяет HTML-сущности
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(\d+);'e");                    // интерпретировать как php-код

$replace = array ("",
                  "",
                  "\\1",
                  "\"",
                  "&",
                  "<",
                  ">",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(\\1)");

$text = preg_replace($search, $replace, $document);

Комментарии: