我已经花了几天时间试图找到一个使用正则表达式的解决方案(在有人说之前:我知道我应该使用 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 中!”,这是我们不想要的)。
所以,我找到了一个解决方案,它就像嵌套括号、方括号等的魅力: …
我一直在四处寻找(但我找不到)以下问题的答案。
在 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”中执行从另一个文件导入的函数,但这不是那么优雅)。
有办法吗?
谢谢!