【发布时间】:2016-02-15 13:58:20
【问题描述】:
我有这个 html 文本:
<span id="target_text">
sample text
<span class="red"> word1 </span>
<span class="green"> <b> word2 </b> word3 </span>
<b> word4 </b>
<span> word5 </span>
<b> word6 </b>
<a class="itlink" href="http:www.example.com" > Details </a>
</span>
我需要在 id = target_text 的范围内获取显示的文本:
sample text word1 word2 word3 word4 word5 word6 Details
注意:我不知道 target_text 中有多少 b 或 span 子标签。
我试过这个表达方式:
preg_match_all ( "%target_text.*?>(.*?<.*?>.*?<.*?>.*?)</span>%s", $html_text, $out, PREG_PATTERN_ORDER );
首先将定位范围 target_text 然后获取>< 之间或它们之外的所有内容。但它没有用?
【问题讨论】:
-
你真的不能用正则表达式来解析HTML...
-
根据我的经验,XML 解析器通常是一个很好的正则表达式替代品
-
我不会说你不能,更重要的是,你应该这样做。使用
BeautifulSoup、lxml'、HTMLParser等。这些更好。相信我