[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: рекурсивный поиск вхождения части паттерна
jetistyum
Меня интересует, возможно ли сделать рекурсивный поиск части паттерна
Нагляднее:

в некотором хтмл документе может встречаться скрытый блок <div style="display:none">..... </div>

А может и не встречаться...
внутри этого блока может быть в определенном формате забита куча ссылок ( собственно мне эти ссылки и нужно вытянуть )

это можно сделать двумя регекспами - первый проверяет, есть ли блок, и если есть, то во второй передается содержание блока, и там уже рекурсивно повытаскивать урл-ки

PHP
<?php

$test 
= <<<EOD
<body>
<div style="display:none"><!--866641491--><p>Sure, he'll take Visa, MasterCard, the Interac debit card, and, of course,  <a href="http://test/1">biuld a poker table</a>  so long as it's not in digital form. <!--882261642--><p>Colleagues reported that phentermine with  <a href="http://test/2">bet365 casino bonus</a>  on delivery. <!--646481678-->
EOD;


$pattern '/<div style="display:none">(.*?)<\/div>/';
$pattern2 '/.*?<a href="(.*?)".*?/';
$matches2 $matches = array();

$ret preg_match($pattern$test$matches);
$ret preg_match_all($pattern2$matches[1], $matches2);
print_r($matches2[1]);


так все работает, но можно ли как-то вытащить все эти ссылки в один подход????



Спустя 11 минут, 35 секунд (3.05.2009 - 02:07) FatCat написал(а):
HTML
<div style="display:none">
<div><!--866641491--></div>
<p>Sure, he'll take Visa, MasterCard, the Interac debit card, and, of course, <a href="http://test/1">biuld a poker table</a> so long as it's not in digital form. <!--882261642--><p>Colleagues reported that phentermine with <a href="http://test/2">bet365 casino bonus</a> on delivery. <!--646481678-->
</div>

И ничего не вытянется.

ИМХО, тут вообще не регулярками следует делать...

Спустя 17 минут, 23 секунды (3.05.2009 - 02:25) jetistyum написал(а):
Вопрос не столько по качеству самого паттерна, а скорее по методу...
это как раз скрытый <div> c кучей наружных ссылок на остальные зараженные сайты - я писал в топике про то, что мой форум был побит
на других сайтах точно такие-же div-ы
и в них нет ничего кроме ссылок в определенном формате.. вложенных дивов тоже нет..
ну и собственно - вопрос, можно ли это сделать одним выражением, вместо двух......

а если не регекспом то как??? парсить хтмл как XML не всегда получится, далеко не все сайты имеют XHTM валидность..
если есть другие соображения - поделись, не оставляй интригу smile.gif

Спустя 51 минута, 45 секунд (3.05.2009 - 03:16) kirik написал(а):
Одной регуляркой не получится вытащить все внутренние ссылки. А чем тебя твой вариант не устраивает? Ведь насколько я понял тебе всего лишь один раз нужно заменить все ссылки, и потом можно выкинуть этот скрипт smile.gif

Спустя 26 минут, 43 секунды (3.05.2009 - 03:43) jetistyum написал(а):
Не, мне интересно вытянуть все ссылки ... зайти на каждую.. и оттуда вытянуть все ссылки.. и так рекурсивно smile.gif
А еще, не то что не устраивает, а просто интересно, можно ли сделать такую регулярку..... для общего развития, так сказать...

Интересно сколько зараженных сайтов удастся собрать....


Спустя 5 минут, 26 секунд (3.05.2009 - 03:49) kirik написал(а):
Цитата (jetistyum @ 2.05.2009 - 19:43)
можно ли сделать такую регулярку

Есть возможность сделать только проверку на рекурсивную валидность. http://ru2.php.net/manual/ru/regexp.reference.php (Рекурсивные шаблоны)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.