Possible Duplicate:
PHP - How to replace a phrase with another?
我需要改造这段html
<html>
<body>
Lorum ipsum <a href="http://google.com">click here</a> dolores lorem.
Lorum ipsum <a href="http://stackoverflow.com">click here too</a> dolores lorem.
</body>
</html>
收件人:
<html>
<body>
Lorum ipsum @@1@@ dolores lorem.
Lorum ipsum @@2@@ dolores lorem.
</body>
</html>
这如何使用 Domdocument 实现(我对正则表达式解决方案不感兴趣)?
到目前为止,您还没有显示任何代码,所以不清楚您遇到的是哪个问题。我只能假设这是因为如果您遍历更改它的链接列表,则迭代将变得无效。因此只有第一个元素被替换。
使用 for
循环可以帮助每次迭代只获取第一个元素。它还允许为替换中所需的数字初始化和增加计数变量。
替换本身可以通过 replaceChild
轻松完成.循环示例:
for($c = 1; $a = $doc->getElementsByTagName('a')->item(0); $c++) {
$a->parentNode->replaceChild(
$doc->createTextNode(sprintf("@@%d@@", $c)),
$a
);
}
调用 $doc->getElementsByTagName('a')->item(0)
将返回 NULL
如果这样的元素不存在(不再存在)。即循环的退出条件。
完整示例:
$html = '<html><body>
Lorum ipsum <a href="http://google.com">click here</a> dolores lorem.
Lorum ipsum <a href="http://stackoverflow.com">click here too</a> dolores lorem.
</body></html>';
$doc = new DOMDocument();
$doc->loadHtml($html);
for($c = 1; $a = $doc->getElementsByTagName('a')->item(0); $c++) {
$a->parentNode->replaceChild(
$doc->createTextNode(sprintf("@@%d@@", $c)),
$a
);
}
echo $doc->saveHTML();
输出:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
Lorum ipsum @@1@@ dolores lorem.
Lorum ipsum @@2@@ dolores lorem.
</body></html>
希望对您有所帮助。