为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Regex 环视将 HTML 插入到特定位置的字符串中

使用 Regex 环视将 HTML 插入到特定位置的字符串中

PHP
桃花长相依 2021-12-03 15:23:43
我正在使用自动生成的 HTML 菜单(由 WordPress 生成),并且我正在尝试使用 preg_replace 和 regex 环视技术将 HTML 片段插入菜单代码中的特定位置。我对使用正则表达式进行匹配很陌生。我尝试使用前瞻和后视的组合来匹配菜单代码中的特定位置,但在让它出现在我想要的确切位置时遇到了一些麻烦。这是我到目前为止所拥有的:https : //regex101.com/r/thq6rK/1(?=<\/li><li id=.*?mega-menu )HTML 菜单代码在示例 regex101 编辑器中,如果我是对的,应该只有一个匹配项(即使在 HTML 中使用了两个 class="mega-menu" 实例。我试图<li>'s在类“mega-menu”的每个实例之前找到该位置,并<div class="custom-class"></div>在前面的 closed 之前直接插入自定义。我很抱歉,这有点难以解释。这是一个例子。我感兴趣的块:</li></ul></li></ul></li><li id="menu-item-26880" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children mega-menu has-picture has-picture-2 menu-item-26880 nav-item">我想如何工作(换行符只是为了更好地显示插入的<div>):</li></ul></li></ul><div class="custom-class">This would be inserted</div></li><li id="menu-item-26880" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children mega-menu has-picture has-picture-2 menu-item-26880 nav-item">感谢您为我提供的任何帮助。
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

你很接近。更改.*?[^>]*使其不会跨多个元素匹配。

您认为使用非贪婪的正则表达式应该可以找到最短的匹配项。但是贪婪只适用于右边,而不适用于左边。*尽快开始匹配;当它贪婪时,它匹配与模式其余部分一致的最长重复,当它不贪婪时,它匹配最短重复。

https://regex101.com/r/thq6rK/2


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 188 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信