PHP - 如果找到数组中的某个单词,则缩短字符串中的句子

时间:2014-01-05 01:32:21

标签: php string word words short

我正在开发一个PHP脚本,它获取METAR报告并清除它。如果使用某些单词,我需要删除后面的所有内容来缩短METAR。

例如,我需要删除BECMG之后的所有内容,包括TEMPO前面的空格,因为不需要:

$metars = "2013/12/24 07:30 NZOH 240730Z 31011G21KT 280V340 5000 -SHRA FEW020 BKN048 19/14 Q1006 BECMG 20KM TEMPO 6000 RA BKN012 SPECI COR NZOH 240730Z 31011G21KT 280V340 5000 -SHRA FEW020 BKN048 19/14 Q1006 BECMG 20KM TEMPO 6000 RA BKN012";

$comments = array ("BECMG", "RMK", "TEMPO");

$metar = ???

我需要$ metar:

$metar = "2013/12/24 07:30 NZOH 240730Z 31011G21KT 280V340 5000 -SHRA FEW020 BKN048 19/14 Q1006";

存在问题。我不能使用长度数字,因为长度可以改变。如何从一个单词数组中找到某个单词后删除所有内容,包括单词前面的空格以缩短字符串?

此外,$ metars包括BECMG和TEMPO。如果在找到另一个单词之后缩短了,那么我怎么能避免让$ metar包含BECMG呢?换句话说,我希望避免这种情况发生:

$metar = "2013/12/24 07:30 NZOH 240730Z 31011G21KT 280V340 5000 -SHRA FEW020 BKN048 19/14 Q1006 BECMG 20KM";

我希望它是:

$metar = "2013/12/24 07:30 NZOH 240730Z 31011G21KT 280V340 5000 -SHRA FEW020 BKN048 19/14 Q1006";

1 个答案:

答案 0 :(得分:2)

您可以使用foreach循环和字符串函数(如strpossubstr)来实现您的需求:

$metar = "2013/12/24 07:30 NZOH 240730Z 31011G21KT 280V340 5000 -SHRA FEW020 BKN048 19/14 Q1006 BECMG 20KM TEMPO 6000 RA BKN012 SPECI COR NZOH 240730Z 31011G21KT 280V340 5000 -SHRA FEW020 BKN048 19/14 Q1006 BECMG 20KM TEMPO 6000 RA BKN012";
$comments = array ("BECMG", "RMK", "TEMPO");
foreach($comments as $comment){
$pos = strpos($metar, " ".$comment);
if($pos !== false)
$metar = substr($metar, 0, $pos);
}
// Now $metar is "2013/12/24 07:30 NZOH 240730Z 31011G21KT 280V340 5000 -SHRA FEW020 BKN048 19/14 Q1006"