Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2010, 17:37   #1
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию Жадность Perl

Нужно выцепить ссылку с нужным анкором.
Код:
	if (($n_url)=$page=~/<a href=\"(.*?)>$n<\//) {
print $n_url;
	}
и эта гадость работает только если нужная ссылка стоит первой. Если она стоит, например, четвертый, то мы получаем все, начиная от первого <a href и заканчивая анкором.
Sergey2 вне форума Ответить с цитированием
Старый 09.10.2010, 17:49   #2
arvitaly
Пользователь
 
Аватар для arvitaly
 
Регистрация: 01.08.2010
Сообщений: 51
По умолчанию

Жадные выражения используйте, и зачем экранировать слеши если можно просто использовать другой символ для ограничения регулярки
arvitaly вне форума Ответить с цитированием
Старый 09.10.2010, 18:03   #3
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию

ДА я там много чего уже пробовал. Подскажи, плз, как нежадные использовать.
Sergey2 вне форума Ответить с цитированием
Старый 09.10.2010, 18:33   #4
arvitaly
Пользователь
 
Аватар для arvitaly
 
Регистрация: 01.08.2010
Сообщений: 51
По умолчанию

Покажите $page и $n
arvitaly вне форума Ответить с цитированием
Старый 09.10.2010, 18:50   #5
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию

Цитата:
Сообщение от arvitaly Посмотреть сообщение
Покажите $page и $n
Код:
<a href="/page.html?page=3&sort=a" title="gggg">ankor1</a>&nbsp;&nbsp;<a href="/page.html?page=4&gt=6" title="gg">ankor2</a>&nbsp;&nbsp;<a_href="/page.html?page=5&sort=a" title="gggg">ankor3</a>&nbsp;&nbsp;<a_href="/page.html?page=6&sort=a" title="gggg">ankor4</a>&nbsp;&nbsp;<a_href="/page.html?page=7&sort=a" title="gggg">ankor5</a>&nbsp;&nbsp;

$n='ankor3';
Sergey2 вне форума Ответить с цитированием
Старый 09.10.2010, 19:02   #6
arvitaly
Пользователь
 
Аватар для arvitaly
 
Регистрация: 01.08.2010
Сообщений: 51
По умолчанию

Код:
$page='<a href="/page.html?page=3&sort=a" title="gggg">ankor1</a>&nbsp;&nbsp;<a href="/page.html?page=4&gt=6" title="gg">ankor2</a>&nbsp;&nbsp;<a_href="/page.html?page=5&sort=a" title="gggg">ankor3</a>&nbsp;&nbsp;<a_href="/page.html?page=6&sort=a" title="gggg">ankor4</a>&nbsp;&nbsp;<a_href="/page.html?page=7&sort=a" title="gggg">ankor5</a>&nbsp;&nbsp;';
$n='ankor3';
	if (($n_url)=$page=~/<a[^<>]*href=\"([^\"]*)\"[^<>]*>$n<\/a>/) {
        print $n_url;
	}

Код:
$page='<a href="/page.html?page=3&sort=a" title="gggg">ankor1</a>&nbsp;&nbsp;<a href="/page.html?page=4&gt=6" title="gg">ankor2</a>&nbsp;&nbsp;<a_href="/page.html?page=5&sort=a" title="gggg">ankor3</a>&nbsp;&nbsp;<a_href="/page.html?page=6&sort=a" title="gggg">ankor4</a>&nbsp;&nbsp;<a_href="/page.html?page=7&sort=a" title="gggg">ankor5</a>&nbsp;&nbsp;';
$n='ankor3';
	if (($n_url)=$page=~/<a.*href=\"(.*?)\".*>$n<\/a>/) {
        print $n_url;
	}
Первый вариант даже для не совсем валидного html подойдет
arvitaly вне форума Ответить с цитированием
Старый 09.10.2010, 19:26   #7
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию

Спасибо. Взял первый вариант. Немного его "проагрейдил:
Код:
~/<a[^<>]*href=\"([^\"]*)\"[^<>]*[<\w+>]*>$n</
т.е. иногда анкоры загоняют в теги типа <b>. Я правильно указал, что возможно будет < символы >?
Sergey2 вне форума Ответить с цитированием
Старый 09.10.2010, 22:06   #8
arvitaly
Пользователь
 
Аватар для arvitaly
 
Регистрация: 01.08.2010
Сообщений: 51
По умолчанию

Не очень понял, что вы хотели. Приведите пример исходной строки и что нужно вытащить. Ваша регулярка сейчас нерабочая
arvitaly вне форума Ответить с цитированием
Старый 09.10.2010, 22:09   #9
Sergey2
Форумчанин
 
Регистрация: 08.01.2008
Сообщений: 233
По умолчанию

Цитата:
Сообщение от arvitaly Посмотреть сообщение
Не очень понял, что вы хотели. Приведите пример исходной строки и что нужно вытащить. Ваша регулярка сейчас нерабочая
иногда ссылки могут принимать вот такой вид:
Код:
<a href="/page.html?page=3&sort=a" title="gggg"><b>ankor1</b></a>
как это учесть?
Sergey2 вне форума Ответить с цитированием
Старый 09.10.2010, 22:21   #10
arvitaly
Пользователь
 
Аватар для arvitaly
 
Регистрация: 01.08.2010
Сообщений: 51
По умолчанию

Код:
    $page='<a href="/page.html?page=3&sort=a" title="gggg">ankor1</a>&nbsp;&nbsp;<a href="/page.html?page=4&gt=6" title="gg">ankor2</a>&nbsp;&nbsp;<a_href="/page.html?page=5&sort=a" title="gggg"><b>ankor3</b></a>&nbsp;&nbsp;<a_href="/page.html?page=6&sort=a" title="gggg">ankor4</a>&nbsp;&nbsp;<a_href="/page.html?page=7&sort=a" title="gggg">ankor5</a>&nbsp;&nbsp;';
    $page2='<a href="/page.html?page=3&sort=a" title="gggg">ankor1</a>&nbsp;&nbsp;<a href="/page.html?page=4&gt=6" title="gg">ankor2</a>&nbsp;&nbsp;<a_href="/page.html?page=5&sort=a" title="gggg">ankor3</a>&nbsp;&nbsp;<a_href="/page.html?page=6&sort=a" title="gggg">ankor4</a>&nbsp;&nbsp;<a_href="/page.html?page=7&sort=a" title="gggg">ankor5</a>&nbsp;&nbsp;';
    $n='ankor3';
	if (($n_url)=$page=~/<a[^<>]*href=\"([^\"]*)\"[^<>]*>(?:<b>)?$n(?:<\/b>)?<\/a>/)
    {
        print $n_url;
	}
    print "\n";
	if (($n_url)=$page2=~/<a[^<>]*href=\"([^\"]*)\"[^<>]*>(?:<b>)?$n(?:<\/b>)?<\/a>/)
    {
        print $n_url;
	}
arvitaly вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Perl isus Perl 3 06.05.2010 10:24
Perl+Apache tutor PHP 5 16.12.2009 01:20
Инсталировать PERL Stilet Perl 1 17.01.2008 19:35