1

我怎样才能转换这个结构

<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)

4

2 回答 2

1

DOM Document这是一个使用,DOM ElementDOM Node用跨度替换您的 div的 PHP 示例。这是否是最有效的方式......我不完全确定。

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();

PHP 响应来自echo

<!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、body 和 doctype 标签。

于 2013-08-27T17:39:17.907 回答
-3
<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>
于 2013-08-27T17:34:14.460 回答