Php 如何从2个html文件用XPath替换节点

Php 如何从2个html文件用XPath替换节点,php,dom,xpath,domxpath,Php,Dom,Xpath,Domxpath,我需要找到(在originalFile.html(//*[@id='divLinkHeader']/ul)中)并替换为新的(otherFile.html),因为新文件(originalFile_WithNewUL.html)是用新结构保存的 <!-- originalFile.html--> <div class="col-md-4 col-sm-6"> <div id="headerLog" class="call-5"> <a

我需要找到(在originalFile.html(//*[@id='divLinkHeader']/ul)中)并替换为新的(otherFile.html),因为新文件(originalFile_WithNewUL.html)是用新结构保存的

<!-- originalFile.html-->
<div class="col-md-4 col-sm-6">
    <div id="headerLog" class="call-5">
        <a href="#">
        <img class="wa333372" src="#">
        </a>
    </div>
    <div id="what5" class="pl-5 subtitle"> 
    </div>
    <div id="divLinkHeader" class="sub">
        <ul class="list-inline list-unstyled"> <!-- <========= DELETE <ul> ?? -->
            <li><a href="#">Line 1</a></li>
            <li><a href="#">Line 2</a></li>
            <li><a href="#">Line 3</a></li>
            <li><a href="#">Line 4</a></li>
        </ul>
    </div>
</div>

这是另一个文件

<!-- otherFile.html-->
<ul class="list-inline list-unstyled">
  <li><a href="#">New Line 1</a></li>
  <li><a href="#">New Line 2</a></li>
  <li><a href="#">New Line 3</a></li>
</ul>

我只想替换另一个节点以保存名为“originalFile_with newul.html”的文件

这是我的代码:

// ---
// Create New originalFile_WithNewUL.html
// ---
$newFile = "originalFile_WithNewUL".".html";
$html = file_get_contents("originalFile".".html");
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

////
////// create the new node from otherFile.html ???
//// $newNode = $dom->createElement('otherFile.html'); ?????
////
////// fetch and replace the old element ?????
//// $oldNode = $xpath->evaluate("//*[@id='divLinkHeader']/ul");
////
//// $results = $xpath->evaluate("//*");
////


$htmlVar = "<!-- WithNewUL -->\n";
$htmlVar = $htmlVar . $dom->saveHTML($results->item(0)) . "\n";
$htmlVar = $htmlVar . "<!-- END WithNewUL -->";


$fid=fopen($newFile,"w+"); 
fwrite($fid, $htmlVar);  
fclose($fid);
//---
//使用newul.html创建新的原始文件
// ---
$newFile=“originalFile_with newul.”.html”;
$html=文件获取内容(“originalFile.”.html);
$dom=新的DOMDocument();
@$dom->loadHTML($html);
$xpath=newdomxpath($dom);
////
//////从otherFile.html创建新节点???
////$newNode=$dom->createElement('otherFile.html')?????
////
//////获取并替换旧元素?????
////$oldNode=$xpath->evaluate(“//*[@id='divLinkHeader']]/ul”);
////
////$results=$xpath->evaluate(“//*”);
////
$htmlVar=“\n”;
$htmlVar=$htmlVar$dom->saveHTML($results->item(0))。“\n”;
$htmlVar=$htmlVar。"";
$fid=fopen($newFile,“w+”);
fwrite($fid,$htmlVar);
fclose(fid美元);
我需要创建这个结构

<div class="col-md-4 col-sm-6">
    <div id="headerLog" class="call-5">
        <a href="#">
        <img class="wa333372" src="#">
        </a>
    </div>
    <div id="what5" class="pl-5 subtitle"> 
    </div>
    <div id="divLinkHeader" class="sub">
        <ul class="list-inline list-unstyled">
            <li><a href="#">New Line 1</a></li>
            <li><a href="#">New Line 2</a></li>
            <li><a href="#">New Line 3</a></li>
        </ul>
    </div>
</div>


它不是最优雅的,但它很管用

$str1 = file_get_contents("originalFile".".html");
$str2 = file_get_contents("otherFile".".html");
$str3 = "abc"; // here Node old

$htmlVar = str_replace($str3, $str2, $str1);

这不是最优雅的,但它很管用

$str1 = file_get_contents("originalFile".".html");
$str2 = file_get_contents("otherFile".".html");
$str3 = "abc"; // here Node old

$htmlVar = str_replace($str3, $str2, $str1);

我不确定你在问什么。你能澄清你的问题吗?我在你的问题中看到了代码。我仍然不确定你在问什么。也许少一点抽象会有帮助。这个软件的用途是什么?我正在抓取一个URL。使用XPath,我可以创建单独的项目(2个文件html),但现在我需要将它们组合起来。我找到了这个解决方案,但它对我不好,因为我有2个文件html,我不确定你在问什么。你能澄清你的问题吗?我在你的问题中看到了代码。我仍然不确定你在问什么。也许少一点抽象会有帮助。这个软件的用途是什么?我正在抓取一个URL。使用XPath,我可以创建单独的项目(2个html文件),但现在我需要将它们组合起来。我找到了这个解决方案,但它对我不好,因为我有2个html文件