reg-ex刮价

时间:2011-06-27 11:28:57

标签: regex web-scraping

我正在努力削减价格,我正在努力写一些注册表来获取特定文本

<option value="1">
                        1 


                                (£&nbsp;70)


                    </option>

在源代码中显示的价格几乎与上面显示有很多空格。理想情况下,我想从字符串

中抓取70

这是我到目前为止所拥有的

preg_match("/<option value=\"1\">(.+)<\/option>/siU", $html, $matches);

我有一半期望这会抓住 1(70英镑),但它没有用,有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

/<option value=\"1\">(.*?\((.*?)\).*?<\/option>/

还要确保您在没有新行(pattern modifiers

的情况下测试字符串

您可能还想考虑使用xml解析器。

答案 1 :(得分:0)

嗯,它does匹配。问题是(可能)匹配包含一堆空格字符:

string(97) "
                        1 


                                (£&nbsp;70)


                    "

修改
您可以执行little sanitizing

$matches[1] = preg_replace('/\s+/s', ' ', trim($matches[1]));

给出:

string(14) "1 (£&nbsp;70)"