php中HTML的正则表达式

php中HTML的正则表达式,php,html,regex,Php,Html,Regex,我有一个html文件。。。 此文件具有以下公式: <body> <p class="Title-P">Compiler</p> <p class="Heading1-P">kdnkls:</p> <p class="Normal-P">dsf</p> <p class="ListParagraph-P">kjsksf</p> <p class="ListParagraph-P">

我有一个html文件。。。 此文件具有以下公式:

<body>
<p class="Title-P">Compiler</p>
<p class="Heading1-P">kdnkls:</p>
<p class="Normal-P">dsf</p>
<p class="ListParagraph-P">kjsksf</p>
<p class="ListParagraph-P">dsfsf</p>
<p class="ListParagraph-P">sfsfsf</p>
<p class="Heading2-P">fsfs:</p>
</body>

编译器

kdnkls:

dsf

kjsksf

dsfsf

sfsf

fsfs:

替换标签的合适正则表达式是什么:

foo

foo

  • 等等
  • 我在php中使用preg_replace函数,该函数的参数为:pattern和replacement…

    试试:

    $html = preg_replace('/<p class="Title-P">(.*?)<\/p>/i', "<h1>$1</h1>", $html);
    $html = preg_replace('/<p class="Normal-P">(.*?)<\/p>/i', "<p>$1</h1>", $html);
    
    $html=preg_replace('/

    (*?)/i'、“$1”、$html); $html=preg_replace('/

    (.*?)/i',“$1”,$html);


    这应该是可行的,更好的办法是使用解析文档并进行更改,然后保存文档。

    欢迎使用堆栈溢出!请避免使用正则表达式解析HTML,因为它会。改用一个。lol@Truth!!!我肯定你刚才复制了粘贴的评论…@cristeblonde:我正在使用chrome插件。@drew010的回答非常有用…你知道我可以在大约0.8秒内破解这个正则表达式,对吗?我知道很多事情。他的HTML文件有一个特定的格式,它与…@user1576848匹配。DOM是一个真正的HTML/XHTML解析器,可以将整个HTML文档解析为一个对象,您可以轻松访问文档中的某些标记和搜索节点。虽然正则表达式可以用来匹配某些可能是HTML的模式,但它并不适合更高级的HTML解析,因为匹配正确的结束标记可能很困难或过于复杂。对于任何对(X)HTML文档中节点的严重操作或访问,DOM都是PHP中的一种方式。@user1576848我的视图将与许多不同,因此,正如您从注释中看到的,人们会疯狂地使用正则表达式来处理HTML。我认为正则表达式适合于某些HTML匹配或替换。如果您理解对HTML格式的任何微小更改都会使您的正则表达式无法匹配,那么为HTML创建过于复杂的正则表达式是一种不好的做法,人们稍后会看它(甚至您自己)而且你不容易理解正则表达式的功能,并且会花很多时间检查它(特别是当它崩溃时)。这就是说:regex可以比使用DOM更快(在高效编写时),因为DOM必须将整个文档结构解析到内存中。对于非常大的文档,DOM可能会使用太多的内存,而编写良好的正则表达式在解析某些内容时会消耗更少的内存。所以,如果你有一个非常特殊的HTML格式,可以很容易地与一个简单易懂的正则表达式匹配,我说很好,它是为了匹配模式而设计的。如果您想执行类似“查找具有
    onclick
    属性的所有
    标记”或“解析
    标记中的所有
    标记”的操作,那么我建议对这些类型的情况使用DOM。那是我的2美分:)