我有这个字符串:
$str = '<div class="defaultClass">...</div>';
Run Code Online (Sandbox Code Playgroud)
如何在'defaultClass'旁边添加'myClass'?
使用原生DOM:
$dom = new DOMDocument;
$dom->loadHTML('<div class="defaultClass">...</div>');
$divs = $dom->getElementsByTagName('div');
foreach($divs as $div) {
$div->setAttribute('class',
$div->getAttribute('class') . ' some-other-class');
}
echo $dom->saveHTML();
Run Code Online (Sandbox Code Playgroud)
"class"属性只是一个空格分隔的类列表.
$str = '<div class="defaultClass myClass">...</div>';
Run Code Online (Sandbox Code Playgroud)
或者你可以像这样一起破解它:
$str = '<div class="defaultClass">...</div>';
$str = str_replace('class="defaultClass', 'class="myClass defaultClass', $str);
//Result: <div class="myClass defaultClass">...</div>
Run Code Online (Sandbox Code Playgroud)
或者使用正则表达式:
$str = '<div class="defaultClass">...</div>';
$str = preg_replace(':class="(.*defaultClass.*)":', 'class="\1 myClass"', $str);
//Result: <div class="defaultClass myClass">...</div>
Run Code Online (Sandbox Code Playgroud)
其他解决方案包括使用XML将其添加到DOM节点,这可能不太容易出错,但更先进,资源更重.