[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: парсинг тега div
motorway
Привет.
Как легче всего сделать такой парсинг: на странице есть некий тег <div class="...">
...
</div>

Внутри него в принципе могут быть, а могут и не быть другие теги div. Мне нужно выцепить все, что относится к самому внешнему тегу первому.
Т.е. есть строка, начинающаяся <div class="..."> и нужно оставить от нее подстроку, оканчивающуюся на закрытии этого тега.



Спустя 5 минут, 18 секунд (5.03.2010 - 18:01) qpayct написал(а):
тебе нужен только 1 <div class=" или все найденые?

Спустя 16 минут, 50 секунд (5.03.2010 - 18:18) motorway написал(а):
Так как их может быть много, использую explode. Так что для каждой строки будет выполняться эта функция по нахождению подстроки

Спустя 9 минут, 56 секунд (5.03.2010 - 18:28) qpayct написал(а):
а покажи пример такого кода откуда надо брать одинаковые отрезки, а то я тебя не понял чёто

Спустя 3 минуты, 9 секунд (5.03.2010 - 18:31) motorway написал(а):
<body>
<div class="a">A
<div></div>
</div>
<hr>
<div class="a">B
<div></div>
11
</div>


</body>

Спустя 2 минуты, 31 секунда (5.03.2010 - 18:33) qpayct написал(а):
и что нужно допустим с этого вырезать?

Спустя 6 минут, 6 секунд (5.03.2010 - 18:39) motorway написал(а):
для первого тега
A
<div></div>,
для второго
B
<div></div>
11

Спустя 42 секунды (5.03.2010 - 18:40) motorway написал(а):
ну explod'ом я их режу, а дальше нужно просто все до конца текущего открытого тега внешнего

Спустя 11 минут, 19 секунд (5.03.2010 - 18:51) qpayct написал(а):
чо!?

колотить!

ты просто показать уже можешь?

Спустя 1 час, 23 минуты, 14 секунд (5.03.2010 - 20:15) motorway написал(а):
а что непонятного-то? я прошу вынуть все содержимое определенного тега div до его закрытия и всё. Вопросы есть?

Спустя 48 минут, 54 секунды (5.03.2010 - 21:04) qpayct написал(а):
значит тебе надо найти "<div" после этого ">" и после вырезать всё что между ">" и "</div>" и всё?

Спустя 7 минут, 2 секунды (5.03.2010 - 21:11) motorway написал(а):
Надо получить все, что находится внутри <div class="post">...</div>, и вырезать.
Если таких <div class="post"> на странице несколько, то просто объединить все, что находится в них. Понятно?
При этом учесть, что там внутри могут быть тоже вложены div'ы

Спустя 16 минут, 40 секунд (5.03.2010 - 21:27) qpayct написал(а):
preg_match_all("/(?<=div class=\"post\">)[a-zA-Z0-9.\/]*(?=<\/div>)/", $string, $matches);
print_r($matches);

как то вот так попробуй

Спустя 5 минут, 58 секунд (5.03.2010 - 21:33) motorway написал(а):
Array ( [0] => Array ( ) ) получил, хотя на странице теги есть

Спустя 17 минут, 5 секунд (5.03.2010 - 21:50) qpayct написал(а):
а что внутри этих тегов?

Спустя 5 минут, 44 секунды (5.03.2010 - 21:56) motorway написал(а):
<div class="post">
<h2><a
href="..." title="...">...</a></h2>

<div
class="entry">

<p
style="text-align: left;"><strong><img class="alignleft size-thumbnail wp-image-586" title="..." src="..." alt="..." width="100" height="100" />TEXT
<p style="text-align: left;">
<p>
TEXT</p>
<div
class="endline"></div>

Тут еще кое-что
</div>

<div
class="endline"></div>








</div>


Спустя 1 час, 36 минут, 56 секунд (5.03.2010 - 23:33) motorway написал(а):
пришла идея, но оказалась неправильной...

Спустя 6 минут, 19 секунд (5.03.2010 - 23:39) qpayct написал(а):
работает blink.gif
<?php
$string="
<div class=
\"post\">
<h2><a href=
\"...\" title=\"...\">...</a></h2>
<div class=
\"entry\">
<p style=
\"text-align: left;\"><strong>
<img class=
\"alignleft size-thumbnail wp-image-586\" title=\"...\" src=\"...\" alt=\"...\" width=\"100\" height=\"100\" />TEXT
<p style=
\"text-align:left;\">
<p>TEXT</p>
<div class=
\"endline\"></div>
Тут еще кое-что</div>
<div class=
\"endline\"></div>
</div>"
;

preg_match_all("/(?<=div class=\"post\">)[\s\S.\/]*(?=<\/div>)/", $string, $matches);
?><textarea cols="50" rows="10"><?
print_r($matches);
?></textarea><?
?>

Спустя 11 минут (5.03.2010 - 23:50) motorway написал(а):
если испробовать на одном сайте, то остаются лишние теги </div>, кроме этого после самого последнего дива остается лишний код, который там есть.
Может, так решить: найти кол-во N входящих <div , а потом найти N+1 </div>.
И все, что между этим, вырезать

Спустя 5 минут, 16 секунд (5.03.2010 - 23:56) qpayct написал(а):
тыб за всё это время мог бы уже сам выучить регулярные выражения rolleyes.gif

Спустя 1 минута, 56 секунд (5.03.2010 - 23:57) motorway написал(а):
по идее да, просто именно они почему-то вызывают у меня неприязнь. Я обычно пытаюсь использовать только explode, substr, strpos и т.п.

Спустя 1 минута, 33 секунды (5.03.2010 - 23:59) qpayct написал(а):
Цитата (motorway @ 5.03.2010 - 22:57)
по идее да, просто именно они почему-то вызывают у меня неприязнь. Я обычно пытаюсь использовать только explode, substr, strpos и т.п.
боязнь нового...

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

Спустя 3 минуты, 38 секунд (6.03.2010 - 00:03) motorway написал(а):
Ты странный какой-то. Разве ты не видел/понял, что нужно выцепить все, что находится между <div class="post"> и соответствующим ему закрывающим </div>? Если же на странице таких <div class="post"> много, то сделать это для каждого такого дива, а потом соединить полученные строки

Спустя 1 минута, 38 секунд (6.03.2010 - 00:04) qpayct написал(а):
спокойной ночи blink.gif

утро вечера мудреней

Спустя 2 минуты, 42 секунды (6.03.2010 - 00:07) motorway написал(а):
ладно, буду добивать
Быстрый ответ:

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