使用php替换类内容

使用php替换类内容,php,html,Php,Html,我想替换HTML中特定类的字符串。 在HTML中还有其他我不想更改的内容。 在下面的代码中,如果只想更改类1和类3的数据,则类2的内容应保持原样。 我需要以动态的方式来解决这个问题 <div class="one"> I want to change this </div> <div class="two"> I don't want to change this </div> <div class="three"> I want

我想替换HTML中特定类的字符串。 在HTML中还有其他我不想更改的内容。 在下面的代码中,如果只想更改类1和类3的数据,则类2的内容应保持原样。 我需要以动态的方式来解决这个问题


<div class="one"> I want to change this </div> 
<div class="two"> I don't want to change this </div> 
<div class="three"> I want to change this </div> 


我想改变这个
我不想改变这个
我想改变这个

Dom函数非常有用

//您的html文件内容
$str='。。。我想改变这个
我不想改变这个
我想改变这个;
$dom=新的DOMDocument();
$dom->loadHtml($str);
$domXpath=newdomxpath($dom);
//查询匹配的节点
$list=$domXpath->query('//div[@class!=“两个”]);
如果($list->length>0){
foreach($作为$node列出){
//更改节点值
$node->nodeValue='Content changed!';
}
}
//得到结果
$new_str=$dom->saveHTML();
var_dump($new_str);

我想改变这个我不想改变这个我想改变这个你知道PHP是服务器端语言吗?因此,在浏览器呈现DOM后,不能使用它修改DOM。你应该使用Javascript来实现这一点是的,但我需要这样的方式。我们有主模板编辑器,其中有两种类型的内容一个是可编辑的,一个是不可编辑的,从这里主管理员可以更新这两个。所以在这里更新不可编辑的文本,可以由主管理员只更新应该得到更新,在所有它的子编辑器或想在保存主模板时,这个替换在控制器中。不是在浏览器上渲染后是的,但也可以使用html标记?是的,但也可以使用html标记?与带有

更改内容的完整html一样

否,分配包含html标记的字符串将被转义。XPath查询结果是一个DOMNodeList对象,它保存所有匹配的DOMNode对象。DOMNode对象也可能包含子节点。如果您想要准确地更改目标内容,那么最好尝试编写正确的xpath查询。在PHP文档中检查它
//your html file content
$str = '...<div class="one"> I want to change this </div>
<div class="two"> I don\'t want to change this </div>
<div class="three"> I want to change this </div>... ';

$dom = new DOMDocument();
$dom->loadHtml($str);

$domXpath = new DOMXPath($dom);

//query the nodes matched
$list = $domXpath->query('//div[@class!="two"]');
if ($list->length > 0) {
    foreach ($list as $node) {
        //change node value
        $node->nodeValue = 'Content changed!';
    }
}

//get the result
$new_str = $dom->saveHTML();

var_dump($new_str);