我正在使用PHP和MySQL。想象一下所有文章都包含以下HTML代码:
</div>
<div id="Homes">
<h2>Homes</h2>
但是,空白可能存在差异,如下所示:
</div>
[WHITESPACE]
<div id="Homes"><h2>Homes</h2>
我想知道是否可以使用正则表达式在上面示例中的第一个div结束标记之前插入一些内容,如下所示:
[INSERT SOMETHING HERE]
</div>
<div id="Homes">
<h2>Homes</h2
正则表达式将忽略空格并将目标指向div#Homes之前的最后一个div结束标记。
如果您不知道可以执行此操作的确切正则表达式,那很好。我只需要知道它是否可以完成(以及是否可以使用phpMyAdmin或者我是否需要一个不同的程序)。
如果无法完成,那么我将不得不插入一些可以用str_replace替换的代码。但如果我能使用正则表达式,那将会更简单,更清晰。
P.S。我的页面实际上将包括几个类似的div /标题 - Homes,Ecology,Environment等。我希望能够在每个部分的末尾插入内容或功能 - 但在某些情况下在结束div标签之前。
答案 0 :(得分:0)
您可以使用以下正则表达式:
</div>(?=[\s\n\r]+<div id="Homes">)
然后用
替换[INSERT SOMETHING HERE]\n</div>
这将匹配Homes div之前的最后</div>
,而不管换行符或空格的数量。
</div>
<div id="Homes">
<h2>Homes</h2>
正则表达式的解释:
</div>
与</div>
?=
是正向查找。请注意,这是非捕获,并且它不会成为匹配的一部分[\s\n\r]
匹配空格或换行符如果您还希望在一行中所有内容都匹配,那么您只需将+
替换为*
:
</div>(?=[\s\n\r]*<div id="Homes">)
匹配
中的<\div>
</div><div id="Homes"><h2>Homes</h2><div id="Homes">