PHP文档回显问题 $content='1!' '; $dom=新的DOMDocument; $dom->preserveWhiteSpace=false; $dom->loadHTML($content); foreach($dom->getElementsByTagName('a')作为$node) { $node->setAttribute('href','http://mysite.ru/'.$node->getAttribute('href'); } $dom->formatOutput=true; echo$dom->saveXml($dom->documentElement);
输出:PHP文档回显问题 $content='1!' '; $dom=新的DOMDocument; $dom->preserveWhiteSpace=false; $dom->loadHTML($content); foreach($dom->getElementsByTagName('a')作为$node) { $node->setAttribute('href','http://mysite.ru/'.$node->getAttribute('href'); } $dom->formatOutput=true; echo$dom->saveXml($dom->documentElement);,php,domdocument,Php,Domdocument,输出: $content = '<!--<sup><span style="font-weight:bold;color:black;">0</span></sup><br/>--> <div class="popular-video-image"> <a href="video/Far+East+Movement - Like+a+G6/w4s6H4ku6ZY/" title="&
$content = '<!--<sup><span style="font-weight:bold;color:black;">0</span></sup><br/>-->
<div class="popular-video-image">
<a href="video/Far+East+Movement - Like+a+G6/w4s6H4ku6ZY/" title="<lang video_go_to=Far East Movement - Like a G6>">
<img src="/images/topvideo/1.jpg" alt=""/>
</a>
<span class="popular-video-artist ellipsis"><a href="video/Far+East+Movement - Like+a+G6/w4s6H4ku6ZY/" title="<lang video_go_to=Far East Movement - Like a G6>" class="ellipsis">Far East Movement</a></span>
<span class="popular-video-title ellipsis"><a href="video/Far+East+Movement - Like+a+G6/w4s6H4ku6ZY/" title="<lang video_go_to=Far East Movement - Like a G6>" class="ellipsis">Like a G6</a></span>
</div>';
$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;
$dom->loadHTML($content);
foreach ($dom->getElementsByTagName('a') as $node)
{
$node->setAttribute('href', 'http://mysite.ru/' . $node->getAttribute('href'));
}
$dom->formatOutput = true;
echo $dom->saveXml($dom->documentElement);
我不想添加html和body标记。也不希望将标记替换为lang
<代码>和
代码>也是不必要的
我想收到这样的内容,这是在入口处,只有修改后的链接
对不起,英语不好 我猜
和
标记之所以被放入,是因为您使用的是loadHTML
。尝试改用loadXML
至于
lang
,它必须被替换,否则生成的XML将无效。如果它给您带来了问题,您应该稍微改变一下方法并使用它,而不是反对它。saveXml采用一个可选参数,允许您指定要输出的节点
<html>
<body>
<div class="popular-video-image">
<a href="http://mysite.ru/video/Far+East+Movement - Like+a+G6/w4s6H4ku6ZY/" title="<lang video_go_to=Far East Movement - Like a G6>">
<img src="/images/topvideo/1.jpg" alt=""/></a>
<span class="popular-video-artist ellipsis"><a href="http://mysite.ru/video/Far+East+Movement - Like+a+G6/w4s6H4ku6ZY/" title="<lang video_go_to=Far East Movement - Like a G6>" class="ellipsis">Far East Movement</a></span>
<span class="popular-video-title ellipsis"><a href="http://mysite.ru/video/Far+East+Movement - Like+a+G6/w4s6H4ku6ZY/" title="<lang video_go_to=Far East Movement - Like a G6>" class="ellipsis">Like a G6</a></span>
</div>
</body>
</html>
这将从输出中删除html和body标记。您将看到&13代码>位于每行末尾,因为您的HTML具有CR+LF
。要消除它们,请在将其馈送到DOMDocument
之前在其上运行此命令,以将它们转换为Unix样式的行尾LF
:
$dom->saveXml($dom->documentElement->firstChild->firstChild);
<?php
$content = '<!--<sup><span style="font-weight:bold;color:black;">0</span></sup><br/>-->
<div class="popular-video-image">
<a href="video/Far+East+Movement - Like+a+G6/w4s6H4ku6ZY/" title="<lang video_go_to=Far East Movement - Like a G6>">
<img src="/images/topvideo/1.jpg" alt=""/>
</a>
<span class="popular-video-artist ellipsis"><a href="video/Far+East+Movement - Like+a+G6/w4s6H4ku6ZY/" title="<lang video_go_to=Far East Movement - Like a G6>" class="ellipsis">Far East Movement</a></span>
<span class="popular-video-title ellipsis"><a href="video/Far+East+Movement - Like+a+G6/w4s6H4ku6ZY/" title="<lang video_go_to=Far East Movement - Like a G6>" class="ellipsis">Like a G6</a></span>
</div>';
$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;
$dom->loadHTML($content);
foreach ($dom->getElementsByTagName('a') as $node)
{
$node->setAttribute('href', 'http://mysite.ru/' . $node->getAttribute('href'));
}
$dom->formatOutput = true;
echo preg_replace('#^<!DOCTYPE.+?>#', '', str_replace( array('<html>', '</html>', '<body>', '</body>', "\n\n", '<', '>'), array('', '', '', '', '', '<', '>',), $dom->saveHTML()));
我需要通过使用DomDocument找到一条出路
$content = preg_replace('/\r\n/', "\n", $content);