剪切 HTML 标签并再次包装 HTML 标签第 1 部分 [重复]

2024-02-22

我尝试转换以下字符串

 <p>
     string
    <b>
      bold
        <em>italic string</em>
      also(bold)
    </b>
 </p>

到这个字符串

 <p>
     string
 </p> <!--------------------------------------- insert -->
    <b>
      bold
    </b> <!------------------------------------ insert -->
        <em>italic string</em>
     <b> <!------------------------------------ insert -->             
      also(bold)
    </b>
 <p> <!---------------------------------------- insert -->
 </p>

我知道这不是有效的 html,但我的项目需要它。 ...正则表达式这是一个好方法,但我只是没有得到解决。

整个结构将是动态的,

我的想法是,正则表达式

// open tag close
$regex = '<(.*?)>(.*?)</(.*?)>'

if ($1 != $3) {
$newString = <$1>$2</$1></$3> 
}

但不工作!


好吧,我认为有效的是两次连续替换:

1.

^(\s*<(?!/))([^<]+)>(?=[^<]+\n)((?:(?!</\2>)[\s\S])*?)(?=\n *<)(?![^>]*</\2>)

替换为:

$1$2>$3\n$1/$2>

正则表达式101演示 http://regex101.com/r/tH3iO2

2.

/[^>]+>$\n\K([^<>]*?)(^\s*)(?=</([^>]+)>)

替换为:

$2<$3>\n$1$2

正则表达式101演示 http://regex101.com/r/wI1eX5

ideone渲染 http://ideone.com/cF46l2

我不知道为什么 ideone 会转动<> into &lt; and &gt;我不知道如何避免它:(

但这适用于您的样本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

剪切 HTML 标签并再次包装 HTML 标签第 1 部分 [重复] 的相关文章

随机推荐

  • 错误的 WebTarget 实现 SseEventSource

    我已经实现了一种通过 SSE 事件在我的应用程序中接收来自 OpenHab 的实时通知的方法 以前我使用 glassfish 服务器来部署我的应用程序 但我需要切换到 Payara 现在无法建立 sse 连接 我收到以下错误 参数fish
  • AS3 fileStream出现将文件读入内存

    我正在编写一个流程 用户需要选择一个远远超出其可用 RAM 的文件 并将该文件分成小块 用于上传 我能够创建对所述文件的 File 引用 但是当我尝试将其传递给 fileStream 时 它似乎尝试在对其进行操作之前尝试将其读入内存 有没有
  • Webpack动态请求

    它不起作用 let serviceName AuthService let servicePath app services serviceName let service require servicePath 它正在工作 let ser
  • C# 中的复杂计算

    最好的 最有效的 工具是什么 NET C 用于计算 积分 偏导数 其他不平凡的数学 人们能否对 Mathematica 和 Matlab 及其集成发表评论C Math NET http www mathdotnet com是一个用 C 编写
  • 2d 球未正确碰撞

    我只是想编写一个漂亮的物理游戏 球碰撞看起来不错 但如果球碰撞太慢 它们就会 粘 在一起 我不知道他们为什么这样做 这是我的碰撞函数 private void checkForCollision ArrayList
  • 将网络响应流放入 iframe - 麻烦

    嘿 又来了 stackoverflowers 我正在从旧的 ASP VBScript 中 迁移一个网站 并且我必须使用 iFrame 来保持旧的内容在新容器中工作 在 aspx 页面上 我有一个带有 runat server 属性的 iFr
  • 调用map后pyspark EOFError

    我是 Spark 和 pyspark 的新手 我正在将一个小 csv 文件 40k 读入数据帧 from pyspark sql import functions as F df sqlContext read format com dat
  • 使用 ODBC + Access 时转义 SQL 查询中的输入数据

    我试过了odbc prepare odbc execute 更新 Access 文件中的记录 但我总是得到SQL state 07001关于不正确的列计数的错误消息 实际上 该消息是西班牙式英语 没有多大意义
  • 重写超类的指定初始值设定项

    我正在读一本书 其中有一个指南 如果一个类声明了与其超类不同的指定初始值设定项 则必须覆盖超类的指定初始值设定项才能调用新的指定初始值设定项 换句话说 据我了解 这条准则是 如果我从其超类中对我的类进行子类化 并且我的子类有一个与 des
  • Keras model.to_json() 错误:“rawunicodeescape”编解码器无法解码位置 94-98 中的字节:截断的 \uXXXX

    model to json 对于模型 层 类型 输出形状参数 连接到 lambda 1 Lambda 无 3 160 320 0lambda input 1 0 0
  • Linux内核中如何选择“sys”和“proc”文件

    据我所知 在Linux文件系统中 为了用户空间和内核空间之间的信息通信 使用了两种虚拟文件系统 1 过程文件系统 http www tldp org LDP Linux Filesystem Hierarchy html proc html
  • Perl 没有警告旧 Perl 的“实验性”

    我有一段代码使用了很多实验 when smartmatch given 功能 这不是我的代码 我不想看到很多关于实验性功能的警告 所以我添加了no warnings experimental 到这段代码 但experimental类别仅在
  • AFNetworking 2.x.x 中的 AFJSONParameterEncoding

    我正在实施以下贝宝 REST API curl v https api sandbox paypal com v1 vault credit card H Content Type application json H Authorizat
  • 我的 docker 容器没有互联网

    我本来可以正常工作 但现在停止了 我尝试了以下命令但没有效果 docker run dns 8 8 8 8 base ping google com docker run base ping google com sysctl w net
  • React Native 中的旋转动画

    我需要用一个图像创建一个动画 该图像将围绕另一个图像旋转 我已经尝试使用类似问题的建议 例如围绕另一个圆制作一个圆的动画 https stackoverflow com questions 55667722 animate a circle
  • TFS 2017 是否能够将构建定义导出和导入到远程服务器中?

    我们在内部服务器上安装了 Team Foundation Server 2017 我们在沙箱环境中构建 NET 代码 但希望能够手动或远程推送新的构建定义或更新 到我们的客户端 生产服务器 自动化的方式 是的 您可以在 TFS 2017 中
  • 在不知道键的情况下解析 json

    我试图在不知道 json 格式的键和结构的情况下解析 java 中的 json 并将该数据保存到 hashmap 中 我如何循环遍历整个 json 格式并将键和值存储到 hashmap 中 id 12345 value 123 person
  • 原始“null”和 Java 8

    我知道处理的最佳实践null原语是使用盒装包装器 例如Integer代替int 正如这里所讨论的 原始数据类型为 Null https stackoverflow com questions 11047276 null for primit
  • dartlang 和 dartdap 库以及与活动目录的连接

    我一直在为 Dart 寻找一个好的 ldap 库来连接 Microsoft Active Directory 我找到了 dartdap 但我似乎无法让它工作 我 100 确信我的 CN 和密码是正确的 因为我可以使用 lpap 浏览器连接到
  • 剪切 HTML 标签并再次包装 HTML 标签第 1 部分 [重复]

    这个问题在这里已经有答案了 我尝试转换以下字符串 p string b bold em italic string em also bold b p 到这个字符串 p string p b bold b em italic string e