我正在用PHP構建過濾器系統。我需要優先考慮基於關鍵字匹配的文字。過濾器必須識別不同類型的關鍵字。在空間中展現字符串但不在引號中使用空格
其中一種類型是正常字,keyword1 keyword2
。無論文本是否在文本中連續出現,它都會過濾包含'keyword1'和'keyword2'的文本。
另一種類型是單詞的精確組合,"keyword1 keyword2"
。這將優先考慮具有確切組合「keyword1 keyword2」的文章。
還有其他類型,但它們在這裏不相關。
關鍵字類型可以組合,所以keyword1 "keyword2 keyword3"
是有效的,並且將搜索具有「keyword1」和確切組合「keyword2 keyword3」的文章。我可以使用explode(' ', $keywords)
來獲取數組中的關鍵字但是,這會與keyword1 "keyword2 keyword3"
混淆,因爲引號中的文本也會分開。
所以我需要一個函數來分隔關鍵字,但不會將引號中的文本分開。有沒有一個功能可以做到這一點?如果沒有,是一個正則表達式的路要走嗎?
是的,正則表達式可以做你想做的。你試過什麼了? – MCL
@MCL我可以編寫一個正則表達式,但我想知道是否有內置函數來執行此操作。我不要求你寫正則表達式,不要寫'send-me-teh-codez'; – Keelan
你可以編寫你自己的解析器,或者用正則表達式匹配。 (我不會推薦爆炸) –