如何使用preg_match()提取文本?

时间:2012-08-06 13:45:20

标签: php preg-match

  

可能重复:
  How to parse and process HTML with PHP?

我有以下文本存储在变量$new

<div class="img">
<span style="float:left; color:#666;">1.&nbsp;&nbsp;</span>
<a href="/Books/info/J-R-R-Tolkien/The-Lord-of-the-Rings/0618640150.html?utm_term=lord+of+the+ring_1_1">
<img src="http://cdn-img-b-tata.infibeam.net/img/6a53fabc/157/0/9780618640157.jpg?wid=90&hei=113" width="90" height="113" border="0">
</a>
</div>
<span class="title">
<h2 class="simple"><a href="/Books/info/J-R-R-Tolkien/The-Lord-of-the-Rings/0618640150.html?utm_term=lord+of+the+ring_1_1"><em>Lord</em> of the <em>Rings</em></a></h2>
&nbsp;By
<a href="/Books/search?author=J R R Tolkien" style="font-size:12px; text-decoration:none;">J R R Tolkien</a>
<span style="color:#666666; font-size:11px;">[Paperback 2005, 50th Edition]</span>
</span>
<div class="price" style="line-height:30px;margin-top:0px;">

我必须提取从1.&nbsp<div的文字。我已经尝试了所有可能的解决方案,但没有成功。

3 个答案:

答案 0 :(得分:1)

这应该有效

$ret = preg_replace ("#1\.&nbsp(.+)<div#isU", "$1", $new);

包含所有html的$ new 尽管如此,正则表达式并不是实现您想要的唯一方式,尤其不是最好的方式。

答案 1 :(得分:1)

简单的答案是:你没有。 EVER。 HTML不是常规语言,因此正则表达式 CAN NOT PARSE HTML 。您需要使用php中存在的 HTML解析器 DOM

有关正则表达式无法使用HTML的更多信息,请阅读this thread。小马。他来了。

答案 2 :(得分:0)

如果这真的是所有代码,那就足够了

strip_tags($html);