Ответ на вопрос ИСПОЛЬЗУЙТЕ ПАРСЕР ВМЕСТО (извините за мой , кричащий). Хотя иногда быстрее использовать регулярное выражение для получения строки идентификатора или URL-адреса, html-тегам требуется довольно склонный к ошибкам способ понимания через регулярное выражение. Рассмотрим следующий код, не так ли красивее, чем друидические персонажи со специальными значениями?
<?php
$str = "
<container>
<div class='someclass' data='somedata'>
<f>some content here</f>
</div>
</container>";
$xml = simplexml_load_string($str);
echo $xml->div->f; // some content here
$attributes = $xml->div->attributes();
print_r($attributes); // class and data as keys
?>
html НЕ МОЖЕТ быть проанализирован с помощью регулярных выражений, за исключением простых вещей. Вы пытаетесь выполнить синтаксический анализ всего html-фрагмента с помощью регулярного выражения, которое не может быть выполнено, за исключением случаев, когда вы применяете регулярное выражение рекурсивно (что означает, что внутри ярлыков xml могут присутствовать новые HTML-фрагменты, которые НЕ МОЖЕТ быть выполнены с одним регулярным выражением) –
Поскольку '<' and '> 'не входят в ваш второй класс символов. –
@NikosM .: это неверно, pcre (механизм регулярных выражений, используемый PHP) имеет функцию рекурсии. –