PHP анализирует теги HTML

Возможный дубликат:
Как анализировать и обрабатывать HTML с помощью PHP?

Я довольно новичок в PHP. У меня есть текст тега body на какой-либо странице в строковой переменной. Я хотел бы знать, содержит ли он какой-то тег … где указано имя тега tag1, и если это так, возьмите только этот тег из строки. Как я могу сделать это просто на PHP?

Благодаря!!

Solutions Collecting From Web of "PHP анализирует теги HTML"

Вы бы посмотрели на что-то вроде этого:

 <?php $content = ""; $doc = new DOMDocument(); $doc->load("example.html"); $items = $doc->getElementsByTagName('tag1'); if(count($items) > 0) //Only if tag1 items are found { foreach ($items as $tag1) { // Do something with $tag1->nodeValue and save your modifications $content .= $tag1->nodeValue; } } else { $content = $doc->saveHTML(); } echo $content; ?> 

DomDocument представляет собой полный HTML или XML-документ; служит корнем дерева документов. Таким образом, у вас будет действительная разметка, и, найдя элементы по имени тега, вы не найдете комментариев.

Другая возможность – регулярное выражение.

 $matches = null; $returnValue = preg_match_all('#<li.*?>(.*?)</li>#', 'abc', $matches); 

$matches[0][x] содержит все совпадения, такие как <li class="small">list entry</li> , $matches[1][x] содержат только внутренний HTML, такой как list entry .

Быстрый путь:

Посмотрите на позицию индекса tag1, затем найдите позицию индекса / tag1. Затем отрежьте строку между этими двумя индексами. Посмотрите strpos и substr на php.net. Возможно, это не сработает, если ваша строка слишком длинная.

 $pos1 = strpos($bigString, '<tag1>'); $pos2 = strpos($bigString, '</tag1>'); $resultingString = substr($bigString, -$pos1, $pos2); 

Возможно, вам придется добавить и / или вычесть некоторые единицы из $ pos1 и $ pos2, чтобы получить правду result result. (если у вас нет комментариев с tag1 внутри них, вздох )

Правильный путь:

Поиск html-парсеров