php - 用于删除连续字符格式标记的正则表达式

标签 php regex simple-html-dom

我需要一个正则表达式来匹配和替换包含简单 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>

谢谢。

最佳答案

它看起来像这样:

foreach($html->find('p') as $p) {
  while(preg_match('/^<([^>]+)>(.*)<\/\1>$/', $p->innertext, $m)){
    $p->innertext = $m[2];
  }
}

请注意,正则表达式中的 \1 与第一个捕获组中的 html 标签名称相匹配,这可能不是必需的,但我这样做是为了获得奖励。

关于php - 用于删除连续字符格式标记的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43062444/

相关文章:

javascript - 从使用 javascript 填充的网站获取内容

php - 如何用 Simple HTML DOM 模仿子选择器?

php - 为什么 shell_exec 对某些命令不起作用/不输出?

php - 在mysql警告pdo上抛出错误

javascript - Laravel 5.3 + Vue Reddit 类投票系统

javascript - 使用 php 解析重定向页面 简单 HTML DOM

c# - 鉴于c#中的整数开头,从字符串中获取特定数字

php - 如何通过任何爬虫php获取悬停数据(ajax)

regex - 删除除模式和下一行 vim 之外的所有内容

Javascript RegExp 构造函数和文字的不同结果