preg_match_all的問題,我有這樣一行:約數
preg_match_all("/<data_[0-9]>(.*?)<\/data_[0-9]>/",$xml_report,$xml);
,由於某種原因,他帶我只有10個第一排0到9,但他並沒有拿10+行..
我需要改變[0-9]?
preg_match_all的問題,我有這樣一行:約數
preg_match_all("/<data_[0-9]>(.*?)<\/data_[0-9]>/",$xml_report,$xml);
,由於某種原因,他帶我只有10個第一排0到9,但他並沒有拿10+行..
我需要改變[0-9]?
[0-9]
只選擇一個數字0-9。使用[0-9]+
+
是指一個或多個前述元素對*
或.
,它是零個或多個。
由於某些原因,您希望限制數字爲999,您可以使用[0-9] {1,3}。答案[0-9] +等於[0-9] {1,} –
這當然是真的,但他要求0+行。 –
我只是指出它,因爲他使用(。*?)而沒有看到確切地知道*和+如何操作。因此,不提供它作爲答案,只是一個評論:) –
如果你]
後追加+
(加)它會發現多次出現
preg_match_all("/<data_[0-9]+>(.*?)<\/data_[0-9]+>/",$xml_report,$xml);
因爲你忘記了最後[0-9] –
而被標記下來@KorvinSzanto:執行我,已經改變了 – genesis
您只檢查數量的一個出現時試試這個:
preg_match_all("/<data_[0-9]+>(.*?)<\/data_[0-9]+>/",$xml_report,$xml);
*(TIP) *在處理XML時使用[XML解析器](http://docs.php.net/manual/en/refs.xml.php)。 – Gordon
@戈登這個平凡的任務對於正則表達式來說是很好的,它非常簡單,XML解析對於擴展性會更好,但對於簡單獲取' data_ [0-9] +>'的內容,正則表達式是完美的。 –
@Korvin IMO取決於內容將如何處理。如果裏面有更多的XML,那麼我會說不要用正則表達式。如果沒有,那麼是的,正則表達式確實沒問題。然後再次,根據XML結構,使用SimpleXML將同樣易於使用。 – Gordon