我的網站的大多數用戶不熟悉如何正確使用高級搜索運算符。以下只是其中的一個是我在數據庫中看到例如:檢測PHP字符串中的高級布爾搜索運算符
薰衣草+燒傷+
而不是使用+薰衣草+燒傷
我想觸發的錯誤信息,使他們能夠正確地學習如何進行高級搜索。當他們嘗試圍繞單個單詞而不是短語使用引號時,我已經出現了一個錯誤。現在我試圖想出一個當他們沒有正確使用+時顯示的錯誤。我的代碼可以檢測出是否有加號,但我只需要一些幫助就可以知道+是出現在單詞前還是之後。
我的網站的大多數用戶不熟悉如何正確使用高級搜索運算符。以下只是其中的一個是我在數據庫中看到例如:檢測PHP字符串中的高級布爾搜索運算符
薰衣草+燒傷+
而不是使用+薰衣草+燒傷
我想觸發的錯誤信息,使他們能夠正確地學習如何進行高級搜索。當他們嘗試圍繞單個單詞而不是短語使用引號時,我已經出現了一個錯誤。現在我試圖想出一個當他們沒有正確使用+時顯示的錯誤。我的代碼可以檢測出是否有加號,但我只需要一些幫助就可以知道+是出現在單詞前還是之後。
東西沿着這些線路應該做的:
if (preg_match('/\w\+/', $string)) {
// a plus was found following a word
}
看着你有上面的例子,正則表達式運算符^
和$
將是你的興趣。它們匹配行的開始和結束。例如,^+[a-zA-z]*
將匹配你想要的和[a-zA-Z]*+$
將匹配你的用戶輸入。
你或許可以寫一個漂亮的正則表達式,將做到這一點,但你可能想嘗試一些簡單的像這樣。
$queryArray = explode(' ', $rawQuery);
if (count($queryArray)) {
if ('+' === $queryArray[0][0]) {
// + is in front of first word in query
}
$lastWordInQuery = $queryArray[count($queryArray) - 1];
if ('+' === $lastWordInQuery[strlen($lastWordInQuery) - 1]) {
// + is at the end of last word in query
}
}