小编mil*_*fer的帖子

使用正则表达式删除相同类型的 html 嵌套标签的最终解决方案?

我已经花了几天时间试图找到一个使用正则表达式的解决方案(在有人说之前:我知道我应该使用 PHP DOM 文档库或类似的东西,但让我们把它作为一个理论问题),寻找答案,我终于来了与我将在这个问题结束时展示的内容相提并论。

以下只是我之前尝试过的很多事情的总结。

首先,我所说的相同类型的嵌套标签是指:

Text outside any div
<div id="my_id"> bla bla
  <div>
  bla bla bla
    <div style="some style here">
      lalalalala
     </div>
   </div>
    I'm trapped in a div!
</div>
more text outside divs

<div>more divs here!
       <div id="justbeingannoying">radiohead rules</div>
</div>
Run Code Online (Sandbox Code Playgroud)

现在想象我想使用正则表达式删除所有 div及其内容。所以预期的结果是:

Text outside any div
more text outside divs
Run Code Online (Sandbox Code Playgroud)

第一个想法是匹配一切。以下正则表达式匹配具有属性(样式、id 等)的 div 标签:

/<div[^>]*>.*<\/div>/sig
Run Code Online (Sandbox Code Playgroud)

这个问题,当然,这将匹配一切的第一个“<DIV”的开始和最后一个“</ DIV>”之间,所以它将匹配“更多的文本之外的div”太(点击此处查看:HTTPS:/ /regex101.com/r/iR8mY2/1),这不是我们(我)想要的。

这可以使用U 修饰符(Ungreedy)解决

/<div[^>]*>.*<\/div>/sigU
Run Code Online (Sandbox Code Playgroud)

但是接下来我们会遇到比我们想要的的问题:它只会从第一个“< div”到第一个“”匹配(因此,如果我们删除匹配项,除了一些不匹配的标签之外,还会有文本“我被困在一个 div 中!”,这是我们不想要的)。

所以,我找到了一个解决方案,它就像嵌套括号、方括号等的魅力: …

html php regex dom nested

3
推荐指数
1
解决办法
2160
查看次数

Vue.js、组合 API、“混合”和生命周期钩子

我一直在四处寻找(但我找不到)以下问题的答案。

在 Vue 2.x 中,您可以将 mixins 用于生命周期钩子,例如:我可以创建一个 Mixins.js

export default {
  created() {
    console.log('test');
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,在一个组件中,执行以下操作:

import mixins from "../misc/mixins";

export default {
  name: "My component",
  mixins: [mixins],
  created() {
    console.log('Another test');
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我运行“我的组件”,我会在控制台中同时获得“另一个测试”和“测试”。我找不到使用 Composition API 执行类似操作的方法(当然,我可以在“onMounted”中执行从另一个文件导入的函数,但这不是那么优雅)。

有办法吗?

谢谢!

hook mixins vue.js vuejs3 vue-composition-api

2
推荐指数
1
解决办法
673
查看次数

标签 统计

dom ×1

hook ×1

html ×1

mixins ×1

nested ×1

php ×1

regex ×1

vue-composition-api ×1

vue.js ×1

vuejs3 ×1