Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.14.253.221] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте!
Есть HTML. <html> <head> </head> <body id=test> <h1>Test h1</h1> <div> ASter ASTERA ASTEWA ASTAS </div> <div id="heaader"> Testing header <div class="subID"> test test test </div> </div> bla bla bla bla bla 54353453453453 </body> </html> Регулярка. Вырежет сразу два закрывающих тега. static $pattern = '|<(.*)(\s.*)*>(.*|.*<\/(.*)>)</\\1>|Ums'; Вопрос: как переписать регулярку? Чтобы получить нормальное дерево. При рекурсивном перебирании ХТМЛ, регулярка дает такой результат. Прикреплённый файлKRUMO.JPG (32,04 Кбайт, скачиваний: 527) |
Сообщ.
#2
,
|
|
|
Может я не так выразился?
<div> <div> <div> sasdasdsa </div> sdasdas23312asdasdsa </div> sdasdas23312asdasdsa </div> Как взять строку между первым и последним дивом? |
Сообщ.
#3
,
|
|
|
Где постановка задачи?
Если ты хочешь синтаксический анализ HTML с помощью регулярного выражения, то лучше сразу забудь об этом. Регулярки не всесильны. С их помощью можно выделить из HTML теги и обычный текст и разобрать атрибуты тега. Но для построения синтаксического дерева требуется уже более мощный механизм - стековый автомат. |