将一个字符串与php中的某些特定单词分开

时间:2014-08-21 13:21:57

标签: php string explode

我有一个名为$ 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" ?感谢

3 个答案:

答案 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;