如何在php中以正确的顺序包装HTML标记?

如何在php中以正确的顺序包装HTML标记?,php,html,regex,dom,dom-manipulation,Php,Html,Regex,Dom,Dom Manipulation,我有一些不完美的HTML代码。例如,我有 <b><i>bold and italic</b></i> 我想把它层层包起来 <b><i>bold and italic</i></b> 如何在php中实现这一点?我们可以匹配两个打开/关闭标记并滑动文本内容,然后使用preg_replace替换它: 输出 正则表达式 如果这不是您想要的表达式,您可以在中修改/更改表达式 正则表达式电路 您还可以在以下位

我有一些不完美的HTML代码。例如,我有

<b><i>bold and italic</b></i>
我想把它层层包起来

<b><i>bold and italic</i></b>

如何在php中实现这一点?

我们可以匹配两个打开/关闭标记并滑动文本内容,然后使用preg_replace替换它:

输出 正则表达式 如果这不是您想要的表达式,您可以在中修改/更改表达式

正则表达式电路 您还可以在以下位置可视化您的表达式:


谢谢,但可能有3个或更多标签,我如何处理?例如,粗体和斜体

$re = '/(<.+>)(<.+>)(.+)(<\/.+>)(<\/.+>)/s';
$str = '<b><i>bold and italic</b></i>';
$subst = "$1$2$3$5$4";

$result = preg_replace($re, $subst, $str);

echo $result;
<b><i>bold and italic</i></b>