LINUX.ORG.RU

Регулярное выражение для поиска html тега

 ,


0

1

Всем доброго времени суток. У меня есть задача найти в html коде все теги. Библиотеки использовать не могу(таково условие задачи), остаются регулярки. Есть вот такое выражение

/<([^>\/]+)>/i
. Все хорошо, теги ищет все, но когда я использую
preg_match_all("/<([^>\/]+)>/i", $str, $matches, PREG_PATTERN_ORDER);
, то выбираются теги вместе с аттрибутами. Как можно поправить регулярку или вызов функции, чтобы в выбранные строки не попадали аттрибуты?



Последнее исправление: dolblatanna (всего исправлений: 1)
Ответ на: комментарий от Kilte

Ты имеешь ввиду пройтись по уже выбранным тегам, которые в массива $matches? Была мысль, но это слишком уж костыльно. Да и предварительно пройтись по тексту и вырезать аттрибуты тоже плохо, костыльно. Но вот условие не могу придумать в регулярку, чтобы не выбирались аттрибуты. Пробовал писать так /<([^>\/\«]+)>/i , но в этом случае выбираются только те теги, у которых просто нет аттрибутов

dolblatanna
() автор топика
babl@malamut:~$ head ~/1.php
<?php

$str = '<div class="code"><pre class="no-highlight"><code>/&lt;([^&gt;\/]+)&gt;/i</code></pre></div>';
preg_match_all("/<([^>\s\/]+)[^>]*>/i", $str, $matches, PREG_PATTERN_ORDER);
print_r($matches);


die();
?>

babl@malamut:~$ php ~/1.php
Array
(
    [0] => Array
        (
            [0] => <div class="code">
            [1] => <pre class="no-highlight">
            [2] => <code>
        )

    [1] => Array
        (
            [0] => div
            [1] => pre
            [2] => code
        )

)
BaBL ★★★★★
()
Ответ на: комментарий от anonymous

Не надо этого, задача тестовая, ясен пень что в продакшене так делать никто не станет

dolblatanna
() автор топика
/<(\w+)\b(?=[^>]*>)/g
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.