1

PHPで、htmlファイルを開き、div(class Areas)のコンテンツを削除して保存したいと思います。

$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>
4

3 に答える 3

5

あなたはほとんどそこにいました。に変更Areasして、代わりにArea使用する必要があります:saveHtmlFilesaveHTML

$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はドキュメントの先頭にDoctypeを追加することに注意してください、それは大丈夫だと思いますか?

于 2012-09-04T08:58:35.830 に答える
4

saveHTMLhtmlを文字列として出力しsaveHTMLFile、ファイルとして保存します。

于 2012-09-04T08:45:11.340 に答える
3

クラスでdivを削除したいAreaので、XPathクエリを変更するだけです。

$pDivs = $xpath->query(".//div[@class='Area']"); // not 'Areas'

そしてもちろん、結果を使って何かをする必要もあります。たとえば、次のようになります。

echo htmlspecialchars($dom->saveHTML()); // prints the result
于 2012-09-04T08:45:59.290 に答える