У меня есть некоторый 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 для создания подобных фрагментов.
Обновление:
Итак, моя текущая идея:
двигайтесь вверх по дереву разбора, пока я не доберусь до тега, который охватывает весь контент (div class = post в моем случае). Последний узел, который у меня есть перед этим div, является начальной точкой (скорее всего, тегом p).
Отсюда получите предыдущего брата (который снова должен быть тегом p).
Спуск в этот узел и получение последних потомков, сохраняя текстовое содержимое во временную строку. Продолжайте отступать через этих детей, пока мы не получим достаточно фрагмента.
Это все еще не идеально, так как я не уверен, как далеко я должен уйти в отставку, чтобы получить текстовый контент.
Кто-нибудь знает о реализации этой идеи где-нибудь?