Php DomDocument parse新行适用于span,但不适用于img
请看这里: 为什么换行符正确显示为Php DomDocument parse新行适用于span,但不适用于img,php,xml,dom,newline,Php,Xml,Dom,Newline,请看这里: 为什么换行符正确显示为spans,而不是imgs <?php outputImages(); outputSpans(); function outputImages(){ $html = "<div class='test'> <pre> <img src='http://d...content-available-to
span
s,而不是img
s
<?php
outputImages();
outputSpans();
function outputImages(){
$html = "<div class='test'>
<pre>
<img src='http://d...content-available-to-author-only...e.com/5x5/000/fff'>
<img src='http://d...content-available-to-author-only...e.com/5x5/000/fff'>
<img src='http://d...content-available-to-author-only...e.com/5x5/000/fff'>
</pre>
</div>";
getHtml($html);
}
function outputSpans(){
$html = "<div class='test'>
<pre>
<span>a</span>
<span>b</span>
<span>c</span>
</pre>
</div>";
getHtml($html);
}
function getHtml($html){
$doc = new DOMDocument;
$doc->loadhtml($html);
$xpath = new DOMXPath($doc);
$tags = $xpath->query('//div[@class="test"]');
print(get_inner_html($tags[0]));
}
function get_inner_html( $node ) {
$innerHTML= '';
$children = $node->childNodes;
foreach ($children as $child) {
$innerHTML .= $child->ownerDocument->saveXML( $child );
}
return $innerHTML;
}
DOMDocument::loadHTML
函数还有第二个选项
参数。看起来,LIBXML_NOBLANKS
是(至少一个)默认值
你可以用
outputImages();
outputSpans();
function outputImages() {
$html = "<div class='test'>
<pre>
<img src='http://d...content-available-to-author-only...e.com/5x5/000/fff'>
<img src='http://d...content-available-to-author-only...e.com/5x5/000/fff'>
<img src='http://d...content-available-to-author-only...e.com/5x5/000/fff'>
</pre>
</div>";
getHtml($html);
}
function outputSpans() {
$html = "<div class='test'>
<pre>
<span>a</span>
<span>b</span>
<span>c</span>
</pre>
</div>";
getHtml($html);
}
function getHtml($html) {
$doc = new DOMDocument;
$doc->loadHTML($html, LIBXML_NOEMPTYTAG);
$xpath = new DOMXPath($doc);
$tags = $xpath->query('//div[@class="test"]');
print(get_inner_html($tags->item(0)));
}
function get_inner_html( $node ) {
$innerHTML= '';
$children = $node->childNodes;
foreach ($children as $child) {
$innerHTML .= $child->ownerDocument->saveXML( $child );
}
return $innerHTML;
}
若要覆盖该默认值,您的代码将对这两个示例起相同的作用
p、 s.不知道你为什么用
$tags
变量是一个DOMNodeList
,因此您应该使用$tags->item(0)
来获取第一个标记
您的完整代码应如下所示:
outputImages();
outputSpans();
函数outputImages(){
$html=”
";
getHtml($html);
}
函数outputSpans(){
$html=”
A.
B
C
";
getHtml($html);
}
函数getHtml($html){
$doc=新文档;
$doc->loadHTML($html,LIBXML\u NOEMPTYTAG);
$xpath=新的DOMXPath($doc);
$tags=$xpath->query('//div[@class=“test”]');
打印(获取内部html($tags->item(0));
}
函数get\u internal\u html($node){
$innerHTML='';
$children=$node->childNodes;
foreach($childrenas$child){
$innerHTML.=$child->ownerDocument->saveXML($child);
}
返回$innerHTML;
}
print(get_inner_html($tags[0]));
outputImages();
outputSpans();
function outputImages() {
$html = "<div class='test'>
<pre>
<img src='http://d...content-available-to-author-only...e.com/5x5/000/fff'>
<img src='http://d...content-available-to-author-only...e.com/5x5/000/fff'>
<img src='http://d...content-available-to-author-only...e.com/5x5/000/fff'>
</pre>
</div>";
getHtml($html);
}
function outputSpans() {
$html = "<div class='test'>
<pre>
<span>a</span>
<span>b</span>
<span>c</span>
</pre>
</div>";
getHtml($html);
}
function getHtml($html) {
$doc = new DOMDocument;
$doc->loadHTML($html, LIBXML_NOEMPTYTAG);
$xpath = new DOMXPath($doc);
$tags = $xpath->query('//div[@class="test"]');
print(get_inner_html($tags->item(0)));
}
function get_inner_html( $node ) {
$innerHTML= '';
$children = $node->childNodes;
foreach ($children as $child) {
$innerHTML .= $child->ownerDocument->saveXML( $child );
}
return $innerHTML;
}