2012-06-08 45 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;