正則表達式是一種用來匹配字符串的強大工具,在php中使用正則表達式可以方便地從字符串中提取需要的信息。如果需要從字符串中提取多組數據,可以使用正則表達式的分組功能。
正則表達式分組使用小括號()來標識,每個小括號內部的內容都被視為一個分組。正則表達式"/(\d{4})-(\d{2})-(\d{2})/"可以匹配形如"2019-01-01"的日期字符串,并將年、月、日分別作為三個分組。
atch()函數來匹配正則表達式,并將匹配結果存儲在一個數組中。數組的第一個元素為匹配到的整個字符串,后面的元素依次為每個分組匹配到的內容。對于上述正則表達式,可以使用以下代碼從"2019-01-01"中提取年、月、日:
$str = "2019-01-01"; = "/(\d{4})-(\d{2})-(\d{2})/";atchatches);tatches);
輸出結果為:
Array
[0] => 2019-01-01
[1] => 2019
[2] => 01
[3] => 01
atches數組的第一個元素為匹配到的整個字符串"2019-01-01",第二個元素為第一個分組匹配到的內容"2019",第三個元素為第二個分組匹配到的內容"01",第四個元素為第三個分組匹配到的內容"01"。
atchatch()函數類似,但會匹配所有符合條件的字符串,并將匹配結果存儲在一個二維數組中。對于以下字符串數組:
$strs = array("2019-01-01", "2020-02-02", "2021-03-03"); = "/(\d{4})-(\d{2})-(\d{2})/";atchplodeatches);tatches);
輸出結果為:
Array
[0] => 2019-01-01
[1] => 2020-02-02
[2] => 2021-03-03
)
[1] => 2019
[1] => 2020
[2] => 2021
)
[2] => 01
[1] => 02
[2] => 03
)
[3] => 01
[1] => 02
[2] => 03
)
atches數組的第一個元素為匹配到的所有字符串,第二個元素為所有字符串中第一個分組匹配到的內容,第三個元素為所有字符串中第二個分組匹配到的內容,第四個元素為所有字符串中第三個分組匹配到的內容。
atchatch_all()函數來實現。