2015-06-01 38 views
-1

我有一些警報設置,請以電子郵件方式發送給我就經常發生在那些電子郵件,我得到的內容,看起來像這樣正確地解析字符串:如何使用preg_match_all

 2002 Volkswagen Eurovan Clean title - $2000 

這是一般的格式一致。這些也是可點擊的鏈接。 我已經設置了一個腳本,它將正確地從主體字符串中提取鏈接,但我所尋找的基本上是年份以及來自這些標題的價格。可能有多於一個的內容被列入電子郵件。

所以我的問題是,我如何使用preg_match_all來正確獲取所有的可能性,然後我可以爆炸他們獲取第一塊數據(年)和最後一塊數據(價格)?我會採取這種方法,看看我是否可以根據數字進行匹配,因爲它推測格式通常是一樣的?

+1

你能提供你的企圖? – hwnd

+0

'/ ^([0-9] {4})|(\ $ [0-9] +)$ /'這將匹配字符串的開頭的4位數字或一美元在最後用數字簽名。 – castis

+0

我目前的嘗試是這樣的:'/ ^(\ d +)/我' – MrTechie

回答

0

你可以嘗試匹配4個位數開始1920和命名這些捕獲$後的數字的價格,並使用錨^$如果這些值總是在開頭和一個字符串的結尾:

^(?'year'\b(?:19|20)\d{2}\b)|(?'price'\$\d+)$ 

demo

樣品IDEONE code

$re = "/^(?'year'\\b(?:19|20)\\d{2}\\b)|(?'price'\\$\\d+)$/"; 
$str = "2002 Volkswagen Eurovan Clean title - \$2100"; 
preg_match_all($re, $str, $matches); 
print_r(array_filter($matches["year"])); 
print_r(array_filter($matches["price"])); 

輸出:

Array 
(
    [0] => 2002 
) 
Array 
(
    [1] => $2100 
) 
+0

有趣的是,當我使用你的$ str時,它可以工作,但是當我使用我的時,它不會。 – MrTechie

+0

什麼是你的?你能分享(最好通過ideone.com) –