使用DOMdocument将div转换为span

时间:2013-08-27 16:52:12

标签: php dom domdocument

如何转换此结构

<div class="parent"> 
   <div class="someclass">
       <b>some HTML</b>
       ...
   </div>
   <div class="someclass">
       <b>some HTML</b>
       ...
   </div>
</div>

<div class="parent">
   <span class="someclass">
       <b>some HTML</b>
       ...
   </span>
   <span class="someclass">
       <b>some HTML</b>
       ...
   </span>
</div>

我有有效的HTML标记,但由于还有很多其他div,我无法做preg_replace。

我喜欢服务器端解决方案(PHP)

2 个答案:

答案 0 :(得分:1)

这是一个PHP示例,使用DOM DocumentDOM ElementDOM Node将span替换为span。是否是最有效的方式......我不完全确定。

PHP代码

$Dom = new DOMDocument();
$Dom->loadHTML('<div id="someid"><b>some HTML</b>...</div>');

$Ele = $Dom->getElementById('someid');
$New = $Dom->createElement('span', $Ele->nodeValue);
$New->setAttribute('id', $Ele->getAttribute('id'));
$Parent = $Ele->parentNode;
$Parent->removeChild($Ele);
$Parent->appendChild($New);

echo $Dom->saveHTML();

来自echo

的PHP响应
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><span id="someid">some HTML...</span></body></html>

您可以使用DOM Fragment忽略所有html,正文和doctype标记。

答案 1 :(得分:-2)

<div id="container">
    <div id="test" style="color:blue;">test</div>
</div>
<script>
var container = document.getElementById("container");
var html = container.innerHTML.replace(new RegExp("<div","g"),"<span");
html = html.replace(new RegExp("<\/div","g"),"</span");
container.innerHTML = html;
</script>