在PHP中提取特定标记中的Html内容,而不使用外部标记

在PHP中提取特定标记中的Html内容,而不使用外部标记,php,web-scraping,domdocument,html,Php,Web Scraping,Domdocument,Html,我想检索某个标记中的html代码。我知道我能做到这一点。但是,如果我想在没有外部标记的情况下提取内容,如何实现呢 比如说, $html = '<div><span>Hello world!</span><br><p>some other text</p></div>'; $doc = new DOMDocument; $doc->loadHTML($html); echo $doc->save

我想检索某个标记中的html代码。我知道我能做到这一点。但是,如果我想在没有外部标记的情况下提取内容,如何实现呢

比如说,

$html = '<div><span>Hello world!</span><br><p>some other text</p></div>';    
$doc = new DOMDocument;
$doc->loadHTML($html);
echo $doc->saveXML($doc->getElementsByTagName('div')->item(0));
这将输出

<div>
    <span>Hello world!</span>
    <br>
    <p>some other text</p>
</div>
我想要没有外部div标签的。我尝试了节点值,但它删除了所有标记

$html = '<div><span>Hello world!</span><br><p>some other text</p></div>';    
$doc = new DOMDocument;
$doc->loadHTML($html);
$node = $doc->getElementsByTagName('div')->item(0);
echo $node->nodeValue;

有什么想法吗?

好的,PHP innerHTML实现怎么样:

<?php 
$html = '<div><span>Hello world!</span><br><p>some other text</p></div>';    
$doc = new DOMDocument;
$doc->loadHTML($html);
$node = $doc->getElementsByTagName('div')->item(0);
echo DOMinnerHTML($node);

function DOMinnerHTML($element) 
{ 
    $innerHTML = ""; 
    $children = $element->childNodes; 
    foreach ($children as $child) 
    { 
        $tmp_dom = new DOMDocument(); 
        $tmp_dom->appendChild($tmp_dom->importNode($child, true)); 
        $innerHTML.=trim($tmp_dom->saveHTML()); 
    } 
    return $innerHTML; 
} 
?> 

好的,PHP innerHTML实现怎么样:

<?php 
$html = '<div><span>Hello world!</span><br><p>some other text</p></div>';    
$doc = new DOMDocument;
$doc->loadHTML($html);
$node = $doc->getElementsByTagName('div')->item(0);
echo DOMinnerHTML($node);

function DOMinnerHTML($element) 
{ 
    $innerHTML = ""; 
    $children = $element->childNodes; 
    foreach ($children as $child) 
    { 
        $tmp_dom = new DOMDocument(); 
        $tmp_dom->appendChild($tmp_dom->importNode($child, true)); 
        $innerHTML.=trim($tmp_dom->saveHTML()); 
    } 
    return $innerHTML; 
} 
?> 

你的要求没有真正的意义,你要求标签和它的内容,但你说你不想要标签。因为你知道你想要什么标签,你可以用regex简单地删除它,或者你可以简单地选择你想要的标签,而不介意有外部标签。你答对了。这意味着这个问题是有道理的。如果你认为这很简单,你能发布一个解决方案吗?我同意这是有道理的,有时我会忘记自己。我已经发布了一个适合你的解决方案。你所要求的没有意义,你要求标签和它的内容,但你说你不想要标签。因为你知道你想要什么标签,你可以用regex简单地删除它,或者你可以简单地选择你想要的标签,而不介意有外部标签。你答对了。这意味着这个问题是有道理的。如果你认为这很简单,你能发布一个解决方案吗?我同意这是有道理的,有时我会忘记自己。我已经发布了一个解决方案,应该适合你。