19377


HTMLパースについての質問です  
[正規表現
PHPで特定のタグをけしたい](https://ja.stackoverflow.com/questions/19279/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE-
php%E3%81%A7%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%BF%E3%82%B0%E3%82%92%E3%81%91%E3%81%97%E3%81%9F%E3%81%84)  
前回の質問の結果から、パースについて調べて、少し理解しました

ソース前提

[code]

        $html = file_get_contents($target);/読み込む
        $doc = new DOMDocument();
        $doc->formatOutput = true;
        $doc->preserveWhiteSpace = false;
        $doc->documentEncoding = 'UTF-8';
        @$doc->loadHTML($html);
        $xpath = new DOMXPath($doc);
    
[/code]

例1）

[code]

        foreach ($xpath->query('//div[@class="hoge"]') as $node) {
                print_r($node);
        }  
    
[/code]

上記で class 名が hoge の div の中身を取り出せることはわかりました。  
文字列) `<div class="hoge">txtxtxtxt</div>`  
取り出す内容）`txtxtxtxt`

また、次のように書くと すべてのdiv タグの中身を削除できることもわかります  
例2）

[code]

         $scripts = iterator_to_array($doc->getElementsByTagName('div'));//タグの検索
            foreach ($scripts as $s) {
            $s->parentNode->removeChild($s);
        }
    
[/code]

今回質問したいのは、「特定のクラス名を持ったタグ」の中身を  
タグも含めて削除したい場合にはどうしたら良いのでしょうか？

例1）のように タグ内のクラスを指定して検索し、  
更に検索に一致したクラスの中身を消したいです。  
`<div class="hoge">~~~~~~~</div>` の中身をすべて消したいです


CC BY-SA 3.0
2015-11-27T12:05:30.193
19376
2015-11-27T12:40:56.207
2017-04-13T12:52:39.113
-1
12608
question
php html
PHP　HTMLコードから特定のclassを持つタグと中身を消したい

[code]

    foreach ($xpath->query('//div[@class="hoge"]') as $node) {
            print_r($node);
    }
    
[/code]

を

[code]

    foreach ($xpath->query('//div[@class="hoge"]') as $node) {
            $node->nodeValue = "";
    }  
    
[/code]

に変更してみてください。

[code]

    echo $doc->saveHTML($doc->documentElement);
    
[/code]

の結果が変わるはずです。


CC BY-SA 3.0
2015-11-27T12:33:01.533
19377
2015-11-27T12:40:56.207
2015-11-27T12:40:56.207
62
62
19376
answer