我正在处理一个PHP代码,该代码需要从文本中获取一些订单ID,订单ID格式如下所示
Ex-
201812321910AT
201812321810AT
201812321910AT-001
201812321910AT-001
里面有类似下面的文字
lorem ispmes dolter yexy tesy 201812321910AT l tesyui lorem ispmes
dolter gjexy tesy 201812321810AT hekfl lorem tesxts
201812321910AT-001 lot kyesu oerd 201812321910AT-001 lfs tes ol sghn
我尝试了此代码,但它还会返回其他匹配的单词,这些单词具有12-15个字母
preg_match('/\b[A-Z]{12,15}\b/', $string, $matches);
var_dump($matches);
我对php preg_match模式不了解,有人可以帮助我使用PHP获取匹配的订单ID。 上面的订单ID仅作为示例,通常订单ID包含12个数字,然后加上AT字母,并且某些订单具有12个数字,然后是AT + 3个数字,然后是-。
答案 0 :(得分:1)
答案 1 :(得分:1)
无需使其比它更复杂。
捕获12位数字,然后偷懒直到空格。
preg_match_all("/(\d{12}AT.*?)\s/", $str, $matches);
var_dump($matches);
输出:
array(2) {
[0]=>
array(4) {
[0]=>
string(15) "201812321910AT "
[1]=>
string(15) "201812321810AT "
[2]=>
string(19) "201812321910AT-001 "
[3]=>
string(19) "201812321910AT-001 "
}
[1]=>
array(4) {
[0]=>
string(14) "201812321910AT"
[1]=>
string(14) "201812321810AT"
[2]=>
string(18) "201812321910AT-001"
[3]=>
string(18) "201812321910AT-001"
}
}