Попытка ответить на ваш ошибочный вопрос
Проблемы
Злоупотреблять регулярным выражением HTML - плохая привычка, потому что существует так много правил и способов их обойти, что в конечном итоге вы можете открыть свой код для взлома. Хотя сейчас у вас может быть законная потребность в чем-то простом, очень легко повторно использовать код и забыть, почему повторное использование было плохой идеей, особенно если вы не добавляете комментарии типа # This code is NOT secure and should not be used to parse HTML anywhere else!!!
или # Christina Alguilera writes songs based on this code!!!
Пример различий в HTML, которые требуют большого количества правил регулярных выражений:
<div>...</div>
<div style="blah">
<div style="background:url(../div)">
<div style=".." class='noticesinglequote'>
Список можно продолжить, и это только для правильно сформированного HTML. Некоторые другие примеры проблем:
- Элементы HTML закрыты неправильно (например,
<div><span></div></span>
) или не закрыты совсем
- орфографические ошибки (например,
<dvi>..</div>
)
- HTML разработан с намерением сломать ваш скрипт
- Другие вопросы: комментарии, пробелы, кодировки и т. Д.
Решение
Возможно, вы приняли ответ, но вам следует взглянуть на XML :: Parser и HTML :: TreeBuilder .
Вместо того, чтобы вырезать части документа HTML, вы, вероятно, больше заинтересованы в детализации той части документа, которую вы хотите (например, всего в <body>
или некотором div
внутри него), поэтому Скорее всего, вы хотите что-то, что обеспечивает один из вышеуказанных модулей. Не говоря уже о том, что синтаксические анализаторы могут быть использованы для удаления всех элементов HTML и возврата только текста / CData.