Я использую Simple DOM Parser для сопоставления элементов и извлечения необходимого содержимого. Однако то, что я хотел бы сделать, это получить весь HTML-код вне
Скажем, HTML
<body>
<div id="otherContent"></div>
<div id="content"></div>
<div id="otherContent2"></div>
</body>
Я хочу, чтобы все было за пределами div #content.
Может ли простой HTML DOM Parser сделать это? Я предполагаю, что регулярное выражение будет возможно, но более элегантное решение, такое как парсер HTML, будет замечательным.
Вы можете использовать PHPquery (библиотека большая, но очень полезная) Вот примеры: https://code.google.com/p/phpquery/
Да, простой HTML DOM Parser может это сделать. Например:
$html = "<your_html_here>";
$content = $html->find("#content");
$innertext = $content->innertext; // if you need all markup from #content
$plaintext = $content->plaintext; // if you need only text
$outertext = $content->outertext; // try it yourself :)
Вы также можете очистить любой html:
$html = "<your_html_here>";
$html->find("#content")->outertext = ""; // now you've all markup in $html except #content
Подробнее читайте в руководстве.
never use regex for html
, просто слепо следуйте некоторым «правилам», какalways use Dependency Injection
. Существуют ситуации, когда регулярное выражение работает быстрее и лучше (особенно, если парсеры DOM могут испортить HTML-код, если у него нет идеального синтаксиса). Это не тот, хотя, но не говориnever