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