想象一下这个HTML:
<html>
<head><title>Nice page</title></head>
<body>Hello World <a href=http://google.com>This is a link</a>
<br />
<a href=http://www.google.com> this also
<img src=wrong.image> and here
</a>
</body>
</html>
当我尝试用大写字母输入链接的所有文本时,它会删除链接标记的img标记。
<html>
<head><title>Nice page</title></head>
<body>Hello World <a href=http://google.com>THIS IS A LINK</a>
<br />
<a href=http://www.google.com> THIS ALSO AND HERE</a>
</body>
</html>
这是我使用的PHP:
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTMLFile("index.html");
$elements = $doc->getElementsByTagName("a");
foreach($elements as $elem)
{
$elem->nodeValue = strtoupper($elem->nodeValue);
}
echo $doc->saveHTML();
我如何保护孩子?
答案 0 :(得分:2)
您可以使用xpath查询专门获取链接中的文本节点。
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTMLFile("example.html");
$xpath = new DOMXPath($doc);
$linkTextNodes = $xpath->query('//a/descendant::text()');
foreach ($linkTextNodes as $node) {
$node->textContent = strtoupper($node->textContent);
}
echo $doc->saveHTML();