Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Perl. Регулярное выражение.

9.6K
30 декабря 2005 года
doomer
8 / / 07.07.2005
Здравствуйте! Помогите мне пожалуйста написать такой скрипт, который делает поиск по массиву(или просто строковой переменной) и считывает все, что находиться после [шаблона начала] и до [шаблона конца] с условием, что таких шаблонов начала и конца в массиве несколько. Например нужно считать символы находящиеся после <a> и до </a> и таких несколько штук. Надеюсь на вашу помощь :)
8
31 декабря 2005 года
mfender
3.5K / / 15.06.2005
Попробуем для начала нарисовать такую конструкцию:
 
Код:
$str = "Этот текст <a href=\"#\">изобилует</a> тэгами A и сейчас <a href=\"#\">мы посмотрим</a>, как их <a href=\"#\">можно найти</a>.";
$pat = "/<a.*>(.*)<\/a>/mi";
preg_match_all($pat, $str, $arr);
print_r($arr);

В результате мы увидим массив такого вида:
Array
(
[0] => Array
(
[0] => изобилует тэгами A и сейчас мы посмотрим, как их можно найти
)

[1] => Array
(
[0] => можно найти
)
)

Т.е., налицо - совсем не то, чего мы хотели: данный шаблон находит последнее подходящее значение в строке.
Некоторого разнообразия можно добиться, если разбить строку на отдельные строки так, чтобы тэги <a></a> находились по одному на строку:
 
Код:
$str = "Этот текст <a href=\"#\">изобилует</a> тэгами A и сейчас <a href=\"#\">мы посмотрим</a>, как их <a href=\"#\">можно найти</a>.";
$pat = "/<a.*>(.*)<\/a>/mi";
$str = preg_replace("/<a/im", "\n<a", $str);
echo $str; //Здесь мы просто видим, как изменилась строка
preg_match_all($pat, $str, $arr);
print_r($arr);


А вообще, настоятельно рекомендую ознакомится с правильным мануалом: http://www.php.net/manual/ru/reference.pcre.pattern.syntax.php
9.6K
31 декабря 2005 года
doomer
8 / / 07.07.2005
mfender, спаибо конечно, но мне более интересно, как это сделать на Perl а не на PHP.
8
31 декабря 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by doomer
mfender, спаибо конечно, но мне более интересно, как это сделать на Perl а не на PHP.


Регулярные выражения (PCRE) в PHP - Perl-совместимые (Perl Compatible Regular Expressions). И работают также.

9.6K
31 декабря 2005 года
doomer
8 / / 07.07.2005
Мне перл пишет:
Undefined subroutine &main::preg_replace
Что надо делать, чтоб небыло ошибки?
300
03 января 2006 года
ReDrum
689 / / 20.04.2000
Цитата:
Originally posted by doomer
Мне перл пишет:
Undefined subroutine &main::preg_replace
Что надо делать, чтоб небыло ошибки?



доки по перлу, в командной строке набираешь
>perldoc perldoc

по регулярным выражениям
>perldoc perlre

Можно глянуть что предлагает CPAN
например HTML::LinkLinkExtractor

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог