【发布时间】:2020-05-02 12:55:46
【问题描述】:
我希望有人可以帮助我...我不是正则表达式专家,我正在寻找处理文本替换的解决方案。
我有一个这样的 HTML 代码:
<script>
...something here...
</script>
<script type="text/javascript">
...something here...
</script>
...something here...
<script type="text/javascript">
1st occurrence
...something here...
fbq(...something here...)
...something here...
</script>
...something here...
<script type="text/javascript">
2nd occurrence
...something here...
fbq(...something here...)
</script>
...something here...
我需要找到 ' 之间包含函数 fbq 的所有字符串。所以在我的例子中,我需要:
组 1:
<script type="text/javascript">
//1st occurrence
...something here...
fbq(...something here...)
...something here...
</script>
组2:
<script type="text/javascript">
2nd occurrence
...something here...
fbq(...something here...)
</script>
如果出现次数更多,依此类推。我认为有更多的比赛而不是更多的组也很好。
注意事项:我的代码中可能有很多 <script 字符串不包含 'fbq' 函数,我无法确定它们的位置以及是否在换行符中。
我尝试了许多正则表达式代码,但找不到有效的方法。
即通过使用
(?:^.*)(<script.*fbq.*<\/script>)(?:.*$)
或
.*(<script.*fbq.*<\/script>).*
我只能找到 fbq 的最后一次出现(在我的示例中只有第二次出现)。
我也尝试过加入团体,但没有成功。
然后我需要在 PHP 代码中使用这个正则表达式,使用 preg_replace 进行替换
非常欢迎任何建议
提前致谢!
【问题讨论】:
-
Nonono - 改用适当的解析器(例如
DOMDocument)。 -
从未使用过 DOMDocument 但是是的......这似乎是一个更好的解决方案。我正在查看有关该功能的文档