cUrl вырезать часть кода страницы

Станислав
На сайте с 27.12.2009
Offline
258
3480

Всем привет. Может быть я и не правильно мыслю и кто подскажет альтернативу

Вобщем есть страница с которой нужно получить текст ссылок

Код участка с ссылками выглядит так

</span></a></span></div>

</div>


</div>
</div>
tags: <a href="http://сайт/">тег 1</a>, <a href="http://сайт/">тег 2</a>, <a href="http://сайт/">тег 3</a>, <a href="http://сайт/">тег 4</a>


<hr/><ul id="related" style="overflow:hidden; height:100px;" class="jcarousel-skin-tango">

Я хочу убрать весь код со страницы и оставить только

tags: <a href="http://сайт/">тег 1</a>, <a href="http://сайт/">тег 2</a>, <a href="http://сайт/">тег 3</a>, <a href="http://сайт/">тег 4</a>

чтобы затем перебрать ссылки и получить теги


//$content - код страницы от <html> до </html>
$pattern = "/<a href=\"([^\"]+)\">([^\"]+)<\/a>/";
if (preg_match_all($pattern,$content,$out,PREG_SET_ORDER))
{
// Достаем ссылки из массива
foreach($out as $key => $val)
{
echo $val[2]."\n";
}
}

Не получается никак выпилить участок кода =(

а может быть и что то получше есть для реализации?

Мы там, где рады нас видеть.
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1


$text = '<a href="/index.php">Link</a>';
$text .= '<a href="/index2.php" target="_blank">Link2</a>';
$PCRE = '#<a([^<]*)>([^<]*)</a>#si';
$text = preg_replace($PCRE, '$2<del>', $text);
echo $text;//Вернет "Link<del>Link2<del>"

Это если надо только анкоры. Под добычу ссылок можете перепилить сами.

Подпись))
siv1987
На сайте с 02.04.2009
Offline
427
#2

Спарсить все теги <a>

Спарсить нужный участок кода по окружающим тегам

Юзать DOM + Xpath

Станислав
На сайте с 27.12.2009
Offline
258
#3

получить анкоры не проблема, у меня не получается убрать все лишнее со страницы чтобы в html коде при парсе было только это

tags: <a href="http://сайт/">тег 1</a>, <a href="http://сайт/">тег 2</a>, <a href="http://сайт/">тег 3</a>, <a href="http://сайт/">тег 4</a>

Дело в том что ссылок на странице море, а вот привязаться не к чему чтобы выпилить данный блок, собственно это у меня и не получается.

siv1987
На сайте с 02.04.2009
Offline
427
#4
Ms-Dred:
у меня не получается убрать все лишнее со страницы чтобы в html коде при парсе было только это

Не с той стороны смотрите, не надо убирать лишнее, а надо захватывать нужное.

Ms-Dred:
Дело в том что ссылок на странице море

И неужели в этих ссылках нет ничего такого чем можно было их идентифицировать?

Ms-Dred:
а вот привязаться не к чему чтобы выпилить данный блок

А это чем не привязка? </span></a></span></div>

Станислав
На сайте с 27.12.2009
Offline
258
#5
siv1987:
А это чем не привязка? </span></a></span></div>

в том что и дело что привязать не получается, пишу регулярку и вижу белую страницу :)

siv1987
На сайте с 02.04.2009
Offline
427
#6
Ms-Dred:
в том что и дело что привязать не получается, пишу регулярку и вижу белую страницу

Ну значит неправильно ее составляете.

Станислав
На сайте с 27.12.2009
Offline
258
#7
siv1987:
Ну значит неправильно ее составляете.

поэтому и прошу помощи :)

делаю / делал что то вроде

$pattern = "/<\/span><\/a><\/span><\/div>([^\"]+)<hr\/>/";

if (preg_match_all($pattern,$content,$out,PREG_SET_ORDER))
{
print_r($out);

}
siv1987
На сайте с 02.04.2009
Offline
427
#8

preg_match( '#</span></a></span></div>(.+?)<hr/><ul#s', $str, $out );

Станислав
На сайте с 27.12.2009
Offline
258
#9

да, так все выводит, спасибо.

doctorpc
На сайте с 12.07.2009
Offline
112
#10

Опередили, но все равно свой вариант напишу.

$content = preg_replace("/\s/","",$content);
$pattern = "/<\/span><\/a><\/span><\/div>(.+)<hr\/>/";

Также часто вырезание всех пробелов избавляет от многих проблем.

А вообще советую использовать PHP Simple HTML DOM Parser http://simplehtmldom.sourceforge.net/manual.htm или аналоги.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий