PHP 正则表达式 点匹配换行符
我想出了一个正则表达式来抓取 2 个 HTML 标签之间的所有文本。这是我到目前为止所拥有的:
实际上,这应该可以完美地工作。但是在 PHP preg_replace 中使用选项执行它: /ims 会导致整个字符串匹配。
如果我删除 /s 标签,它可以正常工作,但标签之间有换行符。有更好的方法来解决这个问题吗?
I am come up with a regex to grab all text between 2 HTML tags. This is what I have so far:
<TAG[^>]*>(.*?)</TAG>
In practice, this should work perfectly. But executing it in PHP preg_replace with options: /ims results in the WHOLE string getting matched.
If I remove the /s tag, it works perfectly but the tags have newlines between them. Is there a better way on approaching this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当然还有更好的方法。 不要使用正则表达式解析 HTML。
DOMDocument 应该能够更好地适应您:
您可能需要调整上面的代码(尚未经过测试) 。
Of course there's a better way. Don't parse HTML with regex.
DOMDocument should be able to accommodate you better:
You may have to tweak the above code (hasn't been tested).
我不建议使用正则表达式来匹配完整的 HTML,但是,您可以使用“dottal”标志:
/REGEXP/s
示例:
I don't recommend use regex to match in full HTML, but, you can use the "dottal" flag:
/REGEXP/s
Example: