在使用 PHP DOMDocument 附加 HTML 图像时需要帮助
Need Help on Appending HTML Image with PHP DOMDocument
我正在尝试使用 PHP DOMDocument 将 <img src="" alt="" >
附加到 <body></body>
中。
代码如下:
$testcode ='<!DOCTYPE html><html><head><title></title></head><body></body></html>';
$dom = new DOMDocument;
$dom->loadHTML($testcode);
$img_tag = $dom->createDocumentFragment();
$img_tag->appendXML('<img src="http://www.somesite.com/" alt="" >');
$body = $dom->getElementsByTagName('body');
foreach($body as $node) {
$node->appendChild($img_tag);
}
echo $dom->saveHTML();
我遇到了这个错误:
Message: DOMNode::appendChild(): Document Fragment is empty
但经过几次实验后我发现它需要结束标签。所以这段代码工作正常:
<img src="http://www.somesite.com/" alt="" ></img>
最后附加的标签看起来不错。它会自动删除结束标记。
<img src="http://www.somesite.com/" alt="" >
问题:为什么我们必须为此使用结束标记?没那么明显。
另一个问题:
添加 URL 参数会触发与上述相同的错误。
<img src="http://www.somesite.com/?v=1¶m=4" alt="" >
再次经过几次试验,当 URL 被编码时它工作正常。再一次,它不是那么明显。
问题:如何在不执行上述操作的情况下以简单的方式附加图像标签。
实际上我正在编写一个邮件应用程序,我只是想在最后插入 google 分析电子邮件打开跟踪代码。类似于:
<img src="http://www.google-analytics.com/collect?v=1&t=event" alt="" >
编码 url 的问题是它没有跟踪任何东西。
提前致谢!
需要解决两件事:
您调用的函数是appendXML
。根据定义,它期望 XML,这与 HTML 略有不同。在XML中,所有标签都必须关闭,所以需要</img>
来关闭<img>
。 <img src="http://www.somesite.com/" alt="" />
也应该有效(自动关闭标签)。
在 HTML 文档中使用未编码的符号 (&
) 是非法的。应该是&
。要将 URL 转换为正确的编码,请尝试以下操作:
'<img src="' . htmlentities("http://www.somesite.com/?v=1¶m=4") . " alt="" ></img>'
那会变成'<img src="http://www.somesite.com/?v=1&param=4" alt=""></img>'
。
我正在尝试使用 PHP DOMDocument 将 <img src="" alt="" >
附加到 <body></body>
中。
代码如下:
$testcode ='<!DOCTYPE html><html><head><title></title></head><body></body></html>';
$dom = new DOMDocument;
$dom->loadHTML($testcode);
$img_tag = $dom->createDocumentFragment();
$img_tag->appendXML('<img src="http://www.somesite.com/" alt="" >');
$body = $dom->getElementsByTagName('body');
foreach($body as $node) {
$node->appendChild($img_tag);
}
echo $dom->saveHTML();
我遇到了这个错误:
Message: DOMNode::appendChild(): Document Fragment is empty
但经过几次实验后我发现它需要结束标签。所以这段代码工作正常:
<img src="http://www.somesite.com/" alt="" ></img>
最后附加的标签看起来不错。它会自动删除结束标记。
<img src="http://www.somesite.com/" alt="" >
问题:为什么我们必须为此使用结束标记?没那么明显。
另一个问题: 添加 URL 参数会触发与上述相同的错误。
<img src="http://www.somesite.com/?v=1¶m=4" alt="" >
再次经过几次试验,当 URL 被编码时它工作正常。再一次,它不是那么明显。
问题:如何在不执行上述操作的情况下以简单的方式附加图像标签。
实际上我正在编写一个邮件应用程序,我只是想在最后插入 google 分析电子邮件打开跟踪代码。类似于:
<img src="http://www.google-analytics.com/collect?v=1&t=event" alt="" >
编码 url 的问题是它没有跟踪任何东西。
提前致谢!
需要解决两件事:
您调用的函数是
appendXML
。根据定义,它期望 XML,这与 HTML 略有不同。在XML中,所有标签都必须关闭,所以需要</img>
来关闭<img>
。<img src="http://www.somesite.com/" alt="" />
也应该有效(自动关闭标签)。在 HTML 文档中使用未编码的符号 (
&
) 是非法的。应该是&
。要将 URL 转换为正确的编码,请尝试以下操作:'<img src="' . htmlentities("http://www.somesite.com/?v=1¶m=4") . " alt="" ></img>'
那会变成'<img src="http://www.somesite.com/?v=1&param=4" alt=""></img>'
。