PHP Regex点匹配换行符

问题描述

| 我想出一个正则表达式来获取2个HTML标记间的所有文本。这是我到目前为止的内容
<TAG[^>]*>(.*?)</TAG>
实际上,这应该可以完美地工作。但是在PHP preg_replace中使用以下选项执行它:/ ims将导致匹配整个字符串。 如果删除/ s标记,则效果很好,但是标记之间有换行符。有没有更好的方法解决这个问题?     

解决方法

当然有更好的方法。不要使用正则表达式解析HTML。 DOMDocument应该能够更好地适应您:
$dom = new DOMDocument();
$dom->loadHTMLFile(\'filename.html\');

$tags = $dom->getElementsByTagName(\'tag\');

echo $tags[0]->textContent; // Contents of `tag`
您可能需要调整以上代码(尚未经过测试)。     ,我不建议使用正则表达式来匹配完整的HTML,但是,您可以使用\“ dottal \”标志: / REGEXP / s 例:
$str = "<tag>
fvox
</tag>";

preg_match_all(\'/<TAG[^>]*>(.*?)</TAG>/is\',$str,$r);
print_r($r); //dump