約數

2011-09-22 56 views
0

preg_match_all的問題,我有這樣一行:約數

preg_match_all("/<data_[0-9]>(.*?)<\/data_[0-9]>/",$xml_report,$xml); 

,由於某種原因,他帶我只有10個第一排0到9,但他並沒有拿10+行..

我需要改變[0-9]?

+0

*(TIP) *在處理XML時使用[XML解析器](http://docs.php.net/manual/en/refs.xml.php)。 – Gordon

+0

@戈登這個平凡的任務對於正則表達式來說是很好的,它非常簡單,XML解析對於擴展性會更好,但對於簡單獲取''的內容,正則表達式是完美的。 –

+0

@Korvin IMO取決於內容將如何處理。如果裏面有更多的XML,那麼我會說不要用正則表達式。如果沒有,那麼是的,正則表達式確實沒問題。然後再次,根據XML結構,使用SimpleXML將同樣易於使用。 – Gordon

回答

2

[0-9]只選擇一個數字0-9。使用[0-9]+

+是指一個或多個前述元素對*.,它是零個或多個。

+0

由於某些原因,您希望限制數字爲999,您可以使用[0-9] {1,3}。答案[0-9] +等於[0-9] {1,} –

+0

這當然是真的,但他要求0+行。 –

+0

我只是指出它,因爲他使用(。*?)而沒有看到確切地知道*和+如何操作。因此,不提供它作爲答案,只是一個評論:) –

1

如果你]後追加+(加)它會發現多次出現

preg_match_all("/<data_[0-9]+>(.*?)<\/data_[0-9]+>/",$xml_report,$xml); 
+0

因爲你忘記了最後[0-9] –

+1

而被標記下來@KorvinSzanto:執行我,已經改變了 – genesis

0

您只檢查數量的一個出現時試試這個:

preg_match_all("/<data_[0-9]+>(.*?)<\/data_[0-9]+>/",$xml_report,$xml);