所以,
我有一些遗留的HTML我尝试使用正则表达式来删除。像
这样的东西<div class="al-list-head"><span>Another List</span></p>
<h3>Destinations</h3>
</div>
HTML中的另一个变体可能是
<div class="al-list-head">
<p><span>Another List</span></p>
<h3>Lounge</h3>
</div>
(CMS有时会添加冗余<p>
。
我的正则表达式大部分(第二个样本)但不是第一个。我尝试了很多字符类,但似乎无法匹配第一个样本中最后</h3>
和最后</div>
之间的差距。
我的正则表达式是......
$html = preg_replace( '/<div class=\"al-list-head\">[\s](<p>?)(<span>Another\ List<\/span>)(<\/p>?)[\s]<h3>([^<\/>]*)<\/h3>[\s]<\/div>/is', '<h3 class="al-head">$4</h3>', $html );
在<\h3>
我尝试[\s]
,([\s]?)
,([\s\b\n\r]*)
甚至是(.*)
之后,我没有运气。
任何指针?
我使用此handy little tool进行迭代和测试,希望有人发现它也很有用。
答案 0 :(得分:1)
使用\s*
$html = preg_replace( '/<div class=\"al-list-head\">\s*(<p>?)(<span>Another\ List<\/span>)(<\/p>?)\s*<h3>([^<\/>]*)<\/h3>\s*<\/div>/is', '<h3 class="al-head">$4</h3>', $html );
答案 1 :(得分:0)
你可以试试下面的正则表达式,它可以适用于两个例子,
/<div\s*class=\"al-list-head\">\s*(<p>)?(<span>Another\s*List<\/span>)(<\/p>)?\s*<h3>([^<\/>]*)<\/h3>\s<\/div>/img
替换字符串:
<h3 class="al-head">$4</h3>