我需要用php文件中的一些文本替换所有<a>
href。我用过
preg_replace('#\s?<a.*/a>#', 'text', $string);
但这会替换所有带有相同文字的链接。我需要为每个链接提供不同的文本。
如何实现这一目标。也可以完全获得href链接,意味着如果我有一个包含链接<a href="www.google.com">Google</a>
的文件,我该如何提取字符串'<a href="www.google.com">Google</a>'
。
请帮帮我。
答案 0 :(得分:1)
使用DOMDocument。
$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node) {
//Do your processing here
}
答案 1 :(得分:1)
好的,既然没有关于如何操纵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
手册,然后点击我在此处使用的所有方法(及相关课程)。 DOMDocument API,就像客户端JS中的DOM API一样,体积庞大而且不那么直观,但这就是它的实际情况......
回答实际的html,没有doctype可以使用saveXML
方法,和/或some string operations ...总而言之,它不应该太难到达你想要的地方,使用此代码作为基础,并提供链接。