1
我试图使用strpos()来搜索特定的单词一个PHP字符串,作为函数嗅出了用户的美军服务和显示的一部分感谢他们的服务。问题是,美国空军(USAF)的老兵,将出现消息两次因为它也嗅着了“USA”部分(这是美国陆军老兵单独的缩写。)如何检查字符串字数组,匹配它恰恰
$p1Name = "Mr. John Smith";
$p2Name = "SSgt. John Doe, USAF";
$milbranches = array("USAF", "USMC", "USCG", "USN", "USA");
foreach ($milbranches as $mil)
{
if(strpos($p1Name, $mil) !== FALSE OR strpos($p2Name, $mil) !== FALSE)
{
echo "Thank you for your service.";
}
}
OR语句从任一$p1Name
或$p2Name
嗅出了这一点显得做工精细,但由于$p2Name
在这个实例包含USAF
,因此满足两个USAF
和USA
匹配,这会产生的输出:
Thank you for your service.Thank you for your service.
必须有一些东西,也许与preg_match()(我很不熟悉PHP中的字符串比较),或者可以告诉它只关注整个短语,而不是挑选出个人匹配的字符?
谢谢!当它击中第一重合
我知道这会很简单!这工作,谢谢。我尝试设置一个变量'$ thanksShown = 1;',其中你的'break;'是最初的位置,然后试图在条件语句中放置'&&!isset($ thanksShown)',但这不起作用。尽管如此,所以,再次感谢! –
然后,您必须保持数组排序。这意味着美国必须在美国空军之后,否则美国空军将永远不会被发现,但从这个意义上讲,你是我的,甚至不包括美国,除非他们想为每个分支做一些独特的事情。所以这不是完美的,但在这种情况下会起作用。 – Mike
错误在于在字符串p2Name中查找USA和USAF的代码。 – 2016-11-19 15:51:46