Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Регулярные выражения [Beta-version] |

20.03.2007, 11:26
|
|
Постоянный
Регистрация: 22.04.2006
Сообщений: 566
Провел на форуме: 1325772
Репутация:
517
|
|
Регулярные выражения [Beta-version]
Привет, все же эта статья не о моих мыслях, а о созданном до меня творении - регулярных выраженийх, то не буду копипастить "заводские" мануалы, а сразу перейду к делу.
Регулярные выраженияКак всегда, материал для затравки:
http://molody.tagiltelecom.ru/doc/program/www/php4/ru/reference.pcre.pattern.syntax.html
и http://www.providerz.ru/articles/php/regexp-intro.html
прочитали? ну хотябы просмотрели? тогда едем дальше
PHP
Разберу только пшп, ибо наиболее распространен, да и в перле все точно так же)
Функции, которые работают с регулярками:
preg_match - http://ru2.php.net/manual/en/function.preg-match.php
PHP код:
int preg_match(
string pattern, // регулярка
string subject, // строка, где ищем
[, array matches] // куда поместятся результаты поиска
)
Тамошний примерчик:
PHP код:
<?
function is_email($Addr)
{
$p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*'; // имя аккаунта
$p.= '@([-a-z0-9]+\.)+([a-z]{2,3}'; // зоны второго уровня
$p.= '|info|arpa|aero|coop|name|museum)$/ix'; // зоны первого уровня
return preg_match($p, $Addr);
}
?>
preg_match_all - http://ru2.php.net/manual/en/functio...-match-all.php -аналогична простому preg_match, только эта позволяет задать порядок, в котором выводятся результаты:
PHP код:
int preg_match_all(
string pattern, // регулярка
string subject, // строка, где ищем
array matches // куда поместятся результаты поиска
[, int order] // порядок размещения строк в результирующем массиве, принимает значения:
PREG_PATERN_ORDER - нулевой элемент будет массивом полных соответствий шаблону.
PREG_SET_ORDER - начиная с нулевого симовола
)
Как видно, эта функция просто более удобна в некоторых ситуациях.
preg_split - http://ru2.php.net/manual/en/function.preg-split.php - разбивает строку в соответствии с регулярным выражением и возвращает массив строк, как функция split() ( http://ru2.php.net/manual/en/function.split.php ):
PHP код:
array preg_split(
string pattern, // регулярка
string subject, // строка, которую разбиваем
[, int limit // ограничение найденных значений
[, int flags] // если указать PREG_SPLIT_NO_EMPTY то функция вернет только не пустые строки
)
ereg_replace - http://ru2.php.net/manual/en/function.ereg-replace.php - обрабатывает стрчоку по шаблону, например:
PHP код:
$hash=ereg_replace("[^0-9a-fA-F]","",$hash);
заменит все, что не цифра и не буква: abcdefABCDEF на пустое множество, т.е. вырежет все, кроме допустимых символов в хеше)
PHP - Иной взгляд
Вот другой взгляд на то же, про что и я говорил
http://www.providerz.ru/articles/php...-continue.html
Правила хорошего тона:
Комментируйте свои регулярки! ведь их наверняка нужно будет комментировать/изменять, поэтому совет:
PHP код:
$hash=ereg_replace("[^ // все кроме
0-9 // цифры
a-f // мелкие буквы abcdef
A-F // большие буквы на всяк случай ABCDEF
]","",$hash);
так понятнее, ведь правда?
Зачем?
фильтровать передаваемые скрипту значения, "сдирать" инфу с чужого сайта, да много еще как)
ЗЫ: не спешите баянить, если что-то не понравилось... ИБО: не решился сразу переводить те 2 начальные статьи, ибо зачем? а щас появились сомнения. можт все же перевести на ВВ-теги форума?
че сделать с теми статьями? "переварить", откомментировав каждые регулярки?
ибо много где регулярки используются, а из-за отстуствия простой документации много вещей непонятны 
ЗЫ еще в тему: http://forum.antichat.ru/thread27498-%F0%E5%E3%F3%EB%FF%F0%ED%FB%E5.html
жду камментов)
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|