gpt4 book ai didi

php - 正则表达式 : Remove all comments from html file BUT preserve same number of lines

转载 作者:行者123 更新时间:2023-12-05 01:29:54 24 4
gpt4 key购买 nike

如果文件中的评论覆盖了 6 行,则应删除该评论并用等于评论行数的空行替换。

这是我的意思的一个小演示。给定 file.html 有 10 行:

    line 1 : <!-- text
line 2 : text
line 3 : text
line 4 : empty line
line 5 : text
line 6 : -->
line 7 :empty line
line 8 :text
line 9 :empty line
line 10 :text

预期的输出是:

    line 1 :empty line
line 2 :empty line
line 3 :empty line
line 4 :empty line
line 5 :empty line
line 6 :empty line
line 7 :empty line
line 8 :text
line 9 :empty line
line 10 :text

我目前使用的模式 preg_replace('/(?=<!--)([\s\S]*?)-->/', '', $contents);用空字符串替换文件的内容,空字符串不会保留与文件之前相同的行数。

请注意,任何解决方案都需要保持文件的结构,这样第 8 行和第 10 行的文本就不会改变文件中的位置。

编辑:不知道为什么这被标记为重复。它与假设的重复问题完全不同,因为人们通常想知道如何解析 dom,而不是我非常具体和集中的问题,即删除文件中的注释文本而不改变文件中的行数那个文件。

最佳答案

您可以使用此搜索进行搜索:

(?:^\h*<!--|(?<!\A|-->\n)\G).*\R

并将其替换为 "\n"

RegEx Demo

正则表达式详细信息:

  • (?: : 启动非捕获组
    • ^ : 行首
    • \h*<!-- : 匹配 0 个或多个空格后跟 <!--
    • | : 或者
    • (?<!\A|-->\n) : 如果我们有起始位置或我们有 --> 则负向后看以避免匹配+ 在前一个位置换行
    • \G : 上一场比赛的比赛结束位置
  • ) : 结束非捕获组
  • .*\R : 匹配行中的剩余字符,然后是换行符

关于php - 正则表达式 : Remove all comments from html file BUT preserve same number of lines,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67525244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com