php打开修改并保存html文件

标签 php html dom removeclass

在 php 中我想打开一个 html 文件,删除 div(类区域)的内容并保存它。

$dom = new DOMDocument;
$dom->loadHTMLFile( "temp/page".$y.".xhtml" );
$xpath = new DOMXPath( $dom );
$pDivs = $xpath->query(".//div[@class='Areas']");
foreach ( $pDivs as $div ) {
  $div->parentNode->removeChild( $div );
}
echo htmlspecialchars($dom->saveHTMLFile());

这行不通...

我的 html 文件看起来:

<html>
 <head>
  <title></title>
  <link href="css.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
   <div style="height:998px;">
    <img src="images/bg004.jpg" />
     <div class="class1">
         <div class="class2"></div>
         <div class="class2"></div>
    </div>
    <div class="Areas">
         <div class="Area"><a href="index.html"></a></div>
         <div class="Area"><a href="index.html"></a></div>
         <div class="Area"><a href="index.html"></a></div>
    </div>
   </div>
  </body>
</html>

我想要这样的结果:

<html>
 <head>
  <title></title>
  <link href="css.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
   <div style="height:998px;">
    <img src="images/bg004.jpg" />
     <div class="class1">
         <div class="class2"></div>
         <div class="class2"></div>
    </div>
    <div class="Areas">

    </div>
   </div>
  </body>
</html>

谢谢你的帮助

更新

如何做同样的事情,但我的文件现在是一个 xml?

我测试这个:

    copy("temp/page".$y.".xhtml", "/temp/page".$y.".xml");
$dom = new DOMDocument;
$dom->load( "temp/page".$y.".xml" );
$xpath = new DOMXPath( $dom );
$pDivs = $xpath->query(".//div[@class='Area']");
foreach ( $pDivs as $div ) {
    $div->parentNode->removeChild( $div );
}
$dom->savexml();

我现在有

<?xml version="1.0" encoding="utf-8"?>
<html>
 <head>
  <title></title>
  <link href="css.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
   <div style="height:998px;">
    <img src="images/bg004.jpg" />
     <div class="class1">
         <div class="class2"></div>
         <div class="class2"></div>
    </div>
    <div class="Areas">
         <div class="Area"><a href="index.html"></a></div>
         <div class="Area"><a href="index.html"></a></div>
         <div class="Area"><a href="index.html"></a></div>
    </div>
   </div>
  </body>
</html>

最佳答案

您就快到了。您只需要将 Areas 更改为 Area,然后使用 saveHtmlFile 而不是 saveHTML:

$dom = new DOMDocument;
$dom->loadHTMLFile( "temp/page".$y.".xhtml" );
$xpath = new DOMXPath( $dom );
$pDivs = $xpath->query(".//div[@class='Area']");
foreach ( $pDivs as $div ) {
  $div->parentNode->removeChild( $div );
}
$dom->saveHTMLFile("temp/page".$y.".xhtml");

假设您要将 HTML 保存回原始文档。请注意,DOMXPath 会将文档类型添加到您的文档的顶部,我想这没问题吧?

关于php打开修改并保存html文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12259785/

相关文章:

php - PHP 中的 JWT(JSON Web token ),无需使用第 3 方库。怎么签?

php - 将类添加到特定表 php 或 jquery 解决方案?

javascript - 使用JS将文本框值放入URL中

html - 如何使用 css 正确定位文本?

javascript - 使用 javascript 从 txt 文件中读取数据,每 5 分钟一次

javascript - 复选框单击事件在数据表的第二页中不起作用?

php - 从 php 执行 Powershell 脚本

php - Wordpress 分页上一个/下一个箭头

javascript - 使用 javascript document.myElementsName 选择 DOM 元素

php - $dom->saveHTML() 截断html代码