0

重複の可能性:
preg_matchphpを使用してラッピング要素を取得する

指定された文字列をラップする要素を取得したいので、例:

$string = "My String";
$code = "<div class="string"><p class='text'>My String</p></div>";

<p class='text'></p>では、正規表現パターンを使用して文字列を照合することで、文字列をラップするようにするにはどうすればよいですか。

4

1 に答える 1

0

PHPのDOMクラスを使用すると、そうすることができます。

$html = new DomDocument();
// load in the HTML
$html->loadHTML('<div class="string"><p class=\'text\'>My String</p></div>');
// create XPath object
$xpath = new DOMXPath($html);
// get a DOMNodeList containing every DOMNode which has the text 'My String'
$list = $xpath->evaluate("//*[text() = 'My String']");
// lets grab the first item from the list
$element = $list->item(0);

これで、タグ全体が<p>できました。ただし、すべての子ノードを削除する必要があります。ここに小さな関数があります:

function remove_children($node) {
  while (($childnode = $node->firstChild) != null) {
    remove_children($childnode);
    $node->removeChild($childnode);
  }
}

この関数を使用してみましょう:

// remove all the child nodes (including the text 'My String')
remove_children($element);

// this will output '<p class="text"></p>'
echo $html->saveHTML($element);
于 2012-07-31T07:10:23.147 に答える