PHP - 如果找到数组中的某个单词,则缩短字符串中的句子
Posted
技术标签:
【中文标题】PHP - 如果找到数组中的某个单词,则缩短字符串中的句子【英文标题】:PHP - Shorten Sentence in a String If a Certain Word in an Array is Found 【发布时间】:2014-01-05 01:32:20 【问题描述】:我正在编写一个获取 METAR 报告并将其清除的 php 脚本。如果使用某些单词,我需要通过删除后面的所有内容来缩短 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";
【问题讨论】:
一个 preg_replace() 会在这里帮助你。不要问我RegEx,因为我对此一无所知!哈哈php.net/preg_replacestrpos
和 foreach
也足够好
【参考方案1】:
您可以使用foreach
循环和字符串函数,如strpos
和substr
来实现您的需要:
$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"
【讨论】:
警告:strstr() 的参数计数错误我不确定是什么导致代码中出现这种情况。 我已经修改了我的答案。当strstr 没有可选的“before_needle”参数时,您可能使用的是 5.3.0 之前的 PHP 版本。不过,substr 足以满足您的目的。 感谢您的帮助!以上是关于PHP - 如果找到数组中的某个单词,则缩短字符串中的句子的主要内容,如果未能解决你的问题,请参考以下文章