我有些短信看起来是这样的:
维德维德马肯 12-14 upp :Omr de E3a: N/2-5节,经14UTC至13节。 Omr de E2b: N/2-5节,14到14节。 E1a,E1b: NV/0-6节,至15节。 Omr de E2a: N/1-6节,å到12节。14- 16 upp :Omr de E1b: N/2-6节,经16UTC至16节。 Omr de E3a: N/3-6节。 Omr de E2b: N/3-5节。 欧姆罗德E2a: N/1-5节,由12到12节。 Omr de E1a: N/0-6节,14到14节。16-18 upp :Omr de E1b: N-NO/1-7节,15至15节。 欧姆罗德E2a,E2b: N/0-4节,由12到12节。 Omr de E1a: NO/3-8节,15直到15节。 Omr de E3a: NO/1-6节,13直到13节。18-20 Omr:Omr de E2b,E3a: NO/1-5节。 Omr de E1b,E2a: N-NO/0-5节,å直到11节. Omr de E1a: NO/1-7节.
我的目标是找到正确的位置和时间的值。
如您所见,文本在时间和区域(例如E3a)中被欺骗,并且在下一个时间间隔中重复相同的区域。
使用这个regex:preg_match_all("/(\d{2}-\d{2})UTC/", $text, $arr);
我得到这个数组:
array(2
0 => array(4
0 => 12-14UTC
1 => 14-16UTC
2 => 16-18UTC
3 => 18-20UTC
)
1 => array(4
0 => 12-14
1 => 14-16
2 => 16-18
3 => 18-20
)
) 现在是世界协调时间14:52。
我该怎么..。让我们说回波$arr[1][1],因为我知道现在的时间是14到16?
我需要正则表达式保持上面的方式,或者至少保持$arr[0],因为在下一个regex模式中我需要这样做。
我被困在这里,因为我不知道如何知道在下一个正则表达式中需要的时间间隔。
发布于 2017-05-02 15:14:09
试一试
preg_match_all("(\d{2})-(\d{2})UTC", $text, $arr);还应该是:
array(3
0 => array(4
0 => 12-14UTC
1 => 14-16UTC
2 => 16-18UTC
3 => 18-20UTC
)
1 => array(4
0 => 12
1 => 14
2 => 16
3 => 18
)
2 => array(4
0 => 14
1 => 16
2 => 18
3 => 20
)
)在这里,您可以通过迭代或回调使用array1和array2的值与当前时间(使用date("G"))进行比较。
由于您将从regex中提取时间值,我还建议您尽可能最好地使用intval()检查输入。
https://stackoverflow.com/questions/43741229
复制相似问题