PHP preg_replace不匹配多个空格

PHP preg_replace不匹配多个空格,php,regex,preg-replace,Php,Regex,Preg Replace,所以 我有一些遗留的HTML,我正试图使用正则表达式来去除其中的积垢。差不多 <div class="al-list-head"><span>Another List</span></p> <h3>Destinations</h3> </div> 另一个列表 目的地 HTML中的另一个变体可能是 <div class="al-list-head"> <p><span>Ano

所以

我有一些遗留的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有时会添加冗余的

我的正则表达式适用于大部分(第二个示例),但不适用于第一个示例。我尝试了很多字符类,但似乎无法匹配第一个示例中最后一个
和最后一个
之间的差距

我的正则表达式是

$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 );
$html=preg\u replace('/[\s](?)(另一个列表)(?)[\s]([^]*)[\s]/is','$4',$html);
之后,我尝试了
[\s]
([\s]?)
([\s\b\n\r]*)
,甚至连
(.*)
都没有运气

有什么建议吗

我用它来迭代和测试,希望有人也能发现它有用。

使用
\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 );
$html=preg\u replace('/\s*()(另一个列表)(?)\s*([^]*)\s*/is','$4',$html);

您可以尝试下面的正则表达式,它可以适用于这两个示例

/<div\s*class=\"al-list-head\">\s*(<p>)?(<span>Another\s*List<\/span>)(<\/p>)?\s*<h3>([^<\/>]*)<\/h3>\s<\/div>/img
/\s*()?(另一个\s*列表)(?\s*([^]*)\s/img
替换字符串:

<h3 class="al-head">$4</h3>
4美元

尝试添加
m
修饰符:您的正则表达式以
/is
结尾,尝试
/ism
@dangvy您的预期输出是什么?您的命令对我有效