Я пытаюсь удалить определенные ссылки в зависимости от их тега ID, но оставьте содержание ссылки. Например, я хочу, чтобы превратитьPHP Dom Удалить элемент оставить содержимое
Some text goes <a href="http://www.domain.tdl/" id="remove">here</a>
в
Some text goes here
Я попытался с помощью ниже.
$dom = new DOMDocument;
$dom->loadHtml(mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8"));
$xp = new DOMXPath($dom);
foreach($xp->query('//a[contains(@id="remove")]') as $oldNode) {
$revised = strip_tags($oldNode);
}
$revised = mb_substr($dom->saveXML($xp->query('//body')->item(0)), 6, -7, "UTF-8");
echo $revised;
примерно взяты из here, но он просто выплевывает обратно одинаковое содержание $html
.
Любая идея о том, как я это достигню?
Вы не изменяете свой документ здесь, поэтому он использует один и тот же контент. Например, вы предоставили вызовы 'replaceChild' на объекте DOM, и вы просто создаете переменную, которую вы позже перезаписываете выводом' saveXML' –
Хороший вопрос, +1. См. Мой ответ одного решения выражения XPath, который выбирает именно нужные узлы. :) –