Извлечение контекста из заданной точки в середине HTML-файла - PullRequest
1 голос
/ 01 февраля 2010

У меня есть некоторый HTML, и я извлекаю фрагмент в определенной точке (встроенное изображение), но я хотел бы показать некоторый контекст вокруг этого изображения.

Я использую PHP и знаю, что и Symfony, и Wordpress предоставляют функции для решения того, что происходит, когда вы разбиваете текст в середине некоторого HTML (он закрывает все открытые теги), но ничего для обработки фрагментов другое направление.

Итак, в случае:

 'Snippet of text and a <a href="#moo">link right her'

Я могу использовать вышеупомянутую функцию для исправления, но как насчет:

'nk right here</a> and then more text after the link.'

Я рассмотрел возможность того, что даже закрывающий тег фрагмент, вероятно, является неправильным путем, и вместо этого я должен использовать Xpath для анализа HTML. Однако я не могу найти никаких примеров или упоминаний об использовании xpath для создания подобных фрагментов.

Обновление:

Итак, моя текущая идея:

  1. двигайтесь вверх по дереву разбора, пока я не доберусь до тега, который охватывает весь контент (div class = post в моем случае). Последний узел, который у меня есть перед этим div, является начальной точкой (скорее всего, тегом p).

  2. Отсюда получите предыдущего брата (который снова должен быть тегом p).

  3. Спуск в этот узел и получение последних потомков, сохраняя текстовое содержимое во временную строку. Продолжайте отступать через этих детей, пока мы не получим достаточно фрагмента.

Это все еще не идеально, так как я не уверен, как далеко я должен уйти в отставку, чтобы получить текстовый контент.

Кто-нибудь знает о реализации этой идеи где-нибудь?

1 Ответ

0 голосов
/ 01 февраля 2010

Это не полный ответ, но вы можете использовать запрос xpath, чтобы получить только интересующие вас узлы, а затем использовать свойства nextSibling и previousSibling (в любой форме, поддерживаемой расширением) для контекст для узла (ов).

...