Соскребание HTML вне найденного элемента

0

Я использую 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, будет замечательным.

  • 2
    Пожалуйста, поделитесь тем, что вы пробовали. Парсер DOM - это то, что вы ищете, вы никогда не должны использовать регулярные выражения для разбора HTML.
  • 1
    @JayBlanchard говорит, что never use regex for html , просто слепо следуйте некоторым «правилам», как always use Dependency Injection . Существуют ситуации, когда регулярное выражение работает быстрее и лучше (особенно, если парсеры DOM могут испортить HTML-код, если у него нет идеального синтаксиса). Это не тот, хотя, но не говори never
Теги:

2 ответа

0

Вы можете использовать PHPquery (библиотека большая, но очень полезная) Вот примеры: https://code.google.com/p/phpquery/

0

Да, простой 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

Подробнее читайте в руководстве.

  • 0
    $ outertext = $ content-> outertext; это неверно, это просто включает фактический совпадающий тег в разметку, где, как innertext, не возвращает это. Я с нетерпением жду, чтобы получить весь HTML до #content и после
  • 0
    @ user2760338 вторая часть кода делает то, что вы хотите, не так ли? если вы установили externaltext как "", вы удалите # content-node из $ html. все html до #content и после будут в $ html.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню