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を使用し、 divDOM ElementDOM Nodeスパンに置き換える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 に答える