veselov.sumy.ua > PHP > Обзор регурярных выражений
Обзор регурярных выражений21.02.11. |
![]() Найти текст, заключенный в какой-то тег и заменить его на другой тег Например: ... заменить аналогично на ... в 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://www.popsu.net'); $url='popsu.net'; $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); Вернуться назад |