ОК, так как нет четкого ответа о том, как манипулировать DOM в пути, я думаю, вы хотите, чтобы манипулировать им:
$foo = '<body><p> Some BS and <a href="https://www.google.com"> Link!</a></p></body>';
$dom = new DOMDocument;
$dom->loadHTML($foo);//parse the DOM here
$links = $dom->getElementsByTagName('a');//get all links
foreach($links as $link)
{//$links is DOMNodeList instance, $link is DOMNode instance
$replaceText = $link->nodeValue.': '.$link->getAttribute('href');//inner text: href attribute
$replaceNode = $dom->createTextNode($replaceText);//create a DOMText instance
$link->parentNode->replaceChild($replaceNode, $link);//replace the link with the DOMText instance
}
echo $dom->saveHTML();//echo the HTML after edits...
Это тушит:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p> Some BS and Link!: https://www.google.com</p></body></html>
Просто запустите, прочитав руководство the DOMDocument
и перейдите ко всем методам (и связанным с ними классам), которые я использую здесь. API DOMDocument, такой как DOM API на стороне клиента JS, громоздкий и не очень интуитивно понятный, но это как раз то, что он ...
Повторение эхо-файла без использования doctype может быть выполнено с использованием метода saveXML
и/или some string operations ... в целом, не должно быть слишком сложно добраться туда, где вы хотите, используя этот код в качестве основы и предоставленные ссылки.
Просто проанализируйте DOM уже ... –
Использование http://php.net/domdocument - Все остальное дерьмо, действительно. Если у вас есть несколько статических ссылок, которые вы хотите заменить, используйте strireplace. Если сложнее, проанализируйте DOM. – DanFromGermany