用于删除连续字符格式标记的正则表达式
Regex for removing consecutive character formatting tags
我需要一个正则表达式来匹配和替换包含整个段落标签的连续字符格式标签,简单 DOM Html 解析器
输入:
<p><b><i>Lorem Ipsum Content</i></b></p>
预期输出:<p>Lorem Ipsum</p>
在下面的例子中,正则表达式应该只匹配和替换 <b>
标签,因为这是唯一包含整个段落标签的标签
例如:输入:<p><b>Text <i> some more text </i>text inside </b></p>
输出:<p>Text <i> some more text </i>text inside </p>
谢谢。
不是一个优雅的,也许是部分的灵魂。
- Trim(剥离)
input
字符串
while True:
- 将
<i>
替换为""
- 将
<b>
替换为""
- 将etc字符标签替换为
""
- ...
- 如果在步骤 3 ~ 6 中没有找到匹配项,则
break
。
第 3 步的正则表达式是这样的。
<p>\s*(<i>)*\s*.*(<\/i>)\s*<\/p>
对于<b>
标签,将<i>
替换为<b>
等
它将看起来像这样:
foreach($html->find('p') as $p) {
while(preg_match('/^<([^>]+)>(.*)<\/>$/', $p->innertext, $m)){
$p->innertext = $m[2];
}
}
请注意,正则表达式中的
与第一个捕获组中的 html 标签名称相匹配,可能没有必要,但我这样做是为了奖励。
我需要一个正则表达式来匹配和替换包含整个段落标签的连续字符格式标签,简单 DOM Html 解析器
输入:
<p><b><i>Lorem Ipsum Content</i></b></p>
预期输出:<p>Lorem Ipsum</p>
在下面的例子中,正则表达式应该只匹配和替换 <b>
标签,因为这是唯一包含整个段落标签的标签
例如:输入:<p><b>Text <i> some more text </i>text inside </b></p>
输出:<p>Text <i> some more text </i>text inside </p>
谢谢。
不是一个优雅的,也许是部分的灵魂。
- Trim(剥离)
input
字符串 while True:
- 将
<i>
替换为""
- 将
<b>
替换为""
- 将etc字符标签替换为
""
- ...
- 如果在步骤 3 ~ 6 中没有找到匹配项,则
break
。
第 3 步的正则表达式是这样的。
<p>\s*(<i>)*\s*.*(<\/i>)\s*<\/p>
对于<b>
标签,将<i>
替换为<b>
等
它将看起来像这样:
foreach($html->find('p') as $p) {
while(preg_match('/^<([^>]+)>(.*)<\/>$/', $p->innertext, $m)){
$p->innertext = $m[2];
}
}
请注意,正则表达式中的 与第一个捕获组中的 html 标签名称相匹配,可能没有必要,但我这样做是为了奖励。