0

HTMLをロードして(おそらくDOMDocument loadHTMLを使用して)、すべての単語Aを単語Bに置き換える必要がありますが、htmlタグ内には何もありません。

これは、次のhtmlで、単語「test」を「TEST」に置き換える必要がある場合、テキスト「this is atest」を「thisisaTEST」に置き換えるだけで、id="test"をそのまま維持することを意味します。

<html>
<head></head>
<body>
  <div id="test"> this is a test </div>
</body>
</html>
4

3 に答える 3

3

DOMDocumentを十分に取得できません:)

$d = new DOMDocument;
$d->loadHTML($html);

$x = new DOMXPath($d);

foreach ($x->query('//text()') as $node) {
    $node->nodeValue = str_replace('test', 'TEST', $node->nodeValue);
}

echo $d->saveHTML();

常に置換を行うことでパフォーマンスが低下するかどうかはわかりませんnodeValue。それ以外の場合は、ループの内容を次のように置き換えます。

$s = str_replace('test', 'TEST', $node->nodeValue, $count);
if ($count) {
    $node->nodeValue = $s;
}
于 2012-06-08T14:35:11.843 に答える
0

Simplehtmldomパーサーを使用できます。

include("simple_html_dom.php");
...
$html = '
<html>
 <head></head>
 <body>
  <div id="test"> this is a test </div>
 </body>
</html>
';

$data = str_get_html($html);
$find = $data->find("div[id='test']",0);
$find->innertext = str_replace("test","TEST",$find->innertext);
$data = $data->save();

echo $data;
于 2012-06-08T14:38:03.703 に答える
0

正規表現を突き刺したい場合は、この回答を見て、REGEX(PHPコード)を使用して2つのHTMLタグ間のすべての「foo」を置き換えてください。

于 2012-06-08T14:41:52.290 に答える