我有一个名为$ metar的字符串
$metar = EICK 011300Z 10004KT 27/17 Q1018 TEMPO AT0800 20006KT 010V220 9999 SCT029
并且此字符串可能每隔一小时更改一次,具体取决于动态文件。
在基本的,我想将$ metar分成两个字符串,单独的点是" AT0800"
list($a, $b) = explode(' AT0800 ', $metar);
echo $b;
但问题是" AT0800"可以改为" AT1200"或" AT1900"在将来,唯一保留的单词是" AT",那么我怎样才能得到字符串$ b后面的字符串" ATxxxx" ?感谢
答案 0 :(得分:3)
使用正则表达式将字符串AT####
拆分:
$metar_split = preg_split('/AT[0-9]{4}/', $metar);
上半场:
echo trim($metar_split[0]);
下半场(你正在寻找的那个):
$b = trim($metar_split[1]);
获取AT####
部分:
preg_match('/AT[0-9]{4}/', $metar, $matches);
$metar_at = $matches[0];
答案 1 :(得分:0)
如果字符串中ATxxxx的位置始终是固定的(并且前面的字符数也是固定的),并且xxxx总是表示4位数,那么您可以使用substr
选择所需的字符串的一部分,如:
$part1 = substr($metar, 0, 38);
$part2 = substr($metar, 46);
但是,如果您正在查看其余内容的不同长度,但预计会出现ATxxxx格式,您可以使用正则表达式:
([\w\s\/]+) AT[0-9]{4} ([\w\s\/]+)
这将抓取你的两个部分,它们由字母AT和4个数字分开。 [\w\s\/]+
部分说:"抓住字符(字母和数字),空格和斜线字符至少一个,或任何数字#34;。
答案 2 :(得分:0)
你走了,答案如下:
list($a, $b) = explode('AT', $metar, 2);
//echo $b;
list($c, $d) = explode(' ', $b, 2);
//echo $d;