dimas199862
@dimas199862
frontend и backend

Как составить регулярное выражение?

Добрый вечер, есть строка

<td><b>3.</b></td><td><a title="More..." href="/ссылка"><b>текст</b></a></td>
			<td align=right><b>VIP</b></td>


Нужно вытащить все что между тегами учитывая то, что могут быть атрибуты
  • Вопрос задан
  • 360 просмотров
Решения вопроса 2
doublench21
@doublench21
HTML полностью описывается лишь контекстно-свободной грамматикой, но никак не регулярной грамматикой. Контекстно-свободная грамматикой включает в себя регулярную грамматику, поэтому иногда пропарсить что-то и получается, но так делать не стоит, полагаясь на авось, если вы только не уверенны на 100%

Лучше воспользоваться чем-то таким: https://github.com/Imangazaliev/DiDOM
Ответ написан
slo_nik
@slo_nik Куратор тега PHP
Добрый вечер.
Можно обойтись без регулярных выражений.
$html = '<td>
           <b>3. Первый тег B</b>
         </td>
         <td>
           <a title="More..." href="/ссылка">
              <b>текст Второй тег B</b>
           </a>
         </td>
         <td align=right>
           <b>VIP Третий тег B</b>
         </td>';       
$dom = new DomDocument();
$dom->loadHTML('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'.$html);
$finder = new DomXPath($dom);
$elements = $finder->query(".//b");

foreach($elements as $element){
  //print_r($element);
  echo  PHP_EOL . $element->nodeValue;
}

Результат
3. Первый тег B
текст Второй тег B
VIP Третий тег B
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы