【发布时间】:2013-01-09 15:00:54
【问题描述】:
我有一个这样的字符串
<div><span style="">toto</span> some character <span>toto2</span></div>
我的正则表达式:
/(<span .*>)(.*)(<\/span>)/
我使用了 preg_match,它返回整个字符串
<span style="">toto</span> some character <span>toto2</span>
我希望它返回:
<span style="">toto</span>
and
<span>toto2</span>
我需要做什么才能实现这一目标?谢谢。
【问题讨论】:
-
不要使用正则表达式解析 HTML。您无法使用正则表达式可靠地解析 HTML。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。有关如何使用 PHP 模块正确解析 HTML 的示例,请参阅 htmlparsing.com/php.html。
-
@AndyLester 解析器并不是防止 HTML 更改的神奇解决方案。
-
@AndyLester 使用整个解析模块来解析一个简单的 标签似乎有点太重了。我认为任何更改都不会影响这个简单的案例。
-
比如
<span style="">\ntoto\n</span>的情况怎么样?如果您正在处理一组不会更改的数据,那么请继续为该特定数据集编写代码。如果您依赖该标记在未来以这样的方式呈现,那么您就是在自找苦恼。
标签: php regex html-parsing