2

PHP文字列から特定のタグを削除する方法はありますか?

たとえばstrip_tags、私はそれを実現するいくつかの機能についての知識を持っていますが、私が本当に望んでいるのは、class属性などを含むタグを削除することです。以下に例を示します。

$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>';

クラス属性「inner」を含むタグのみを削除するにはどうすればよいですか?

誰かが私にこれを行う方法を教えてくれるなら、私は感謝するでしょう。

4

2 に答える 2

2

これを行う関数はありません。恐ろしい正規表現の使用を避けるための最善の方法は、それをDOMDocumentクラスにロードして、文字列内のタグを反復処理することです。次に、クラス属性に応じてタグを選択的に削除し、それを文字列に書き戻すことができます。

ドキュメントについては、http://php.net/manual/en/class.domdocument.phpを参照してください。

于 2012-11-29T16:22:51.910 に答える
1

XPathを使用すると非常に簡単です。

<?php

$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>';

$dom = new DOMDocument;
@$dom->loadXML($string);

$xpath = new DOMXPath($dom);

$inners = $xpath->query('//p[@class="inner"]'); //Select all p.inner in the document

foreach ($inners as $element) {
    $element->parentNode->removeChild($element); //Remove 'em
}

var_dump($dom->saveHTML($dom));
于 2012-11-29T16:47:35.907 に答える