php中HTML的正则表达式
我有一个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">
<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
$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美分:)