2012-06-08 44 views
0

我需要加載HTML(可能帶有DOMDocument loadHTML),然後將所有單詞A替換爲單詞B,但是沒有任何內容存在於HTML標記中。用HTML中的另一個替換字符串,但在HTML標記和屬性中沒有替換PHP

這意味着,在下面的html中,如果我們需要用'TEST'替換'test'這個詞,它將只替換文本'this is a test','這是一個測試'並且將保持id完整=「測試」

+1

有什麼問題在這裏,究竟? – BenLanc

+0

如果您知道如何加載html,如何處理並保存,您知道如何解決您的問題。我們可以做什麼? – Leri

+0

你想在服務文檔時動態地使用PHP嗎? –

回答

3

不能足夠DOM文檔的獲取:)

$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; 
} 
+0

完美!非常感謝! –

0

可以使用Simple html dom parser

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;