我想從亞馬遜獲得一些數據,我正在使用preg_match來查找我需要的元素。但是,我遇到了問題。正則表達式「|」問題
我將兩條語句組合在一起,所以如果找不到其中一條,我相信,除非產品沒有列入其中,否則這些事情將永遠存在。
那麼它在做什麼是尋找運輸成本。如果沒有找到「免運費」文本。
preg_match_all('/(& <b>(.*?)<|<span class="olpShippingPrice">(.*?)<)/',$results,$match1);
如果我運行此我得到我想要的數據,但它抓住了一些HTML,如果我跑這兩個不同的preg_matches這不會是抓住。我無法弄清楚如何展示它,但是它在第一個'免費送貨'和下面的所有文字都是粗體的,抓住了大膽的標籤。你也可以看到胡蘿蔔。
[1]=>
array(10) {
[0]=>
string(38) "$30.00<"
[1]=>
string(37) "$6.99<"
[2]=>
string(37) "$6.99<"
[3]=>
string(38) "$53.99<"
[4]=>
string(37) "$5.25<"
[5]=>
string(19) "& FREE Shipping<"
[6]=>
string(19) "& FREE Shipping<"
[7]=>
string(19) "& FREE Shipping<"
[8]=>
string(19) "& FREE Shipping<"
[9]=>
string(38) "$70.39<"
}
所以我的問題:我應該做些什麼來刪除這個,所以我留下了乾淨的數據標籤和胡蘿蔔?此外,在兩個獨立的preg_match中運行這些對我來說不起作用。
從匹配中刪除'<' – 2014-10-31 15:05:11
這是如何重複的?對我來說似乎很獨特。 – 2014-10-31 15:06:43
@ smack-a-bro因爲用正則表達式解析HTML是不好的,所鏈接問題的答案是值得注意的警告。 ***特別是當你不控制源HTML時。 – 2014-10-31 15:08:03