[英]PHP + mySQL - Match exact word
我在mysql數據庫中有一些文本,我正在使用此查詢嘗試將查詢中的確切單詞與php匹配:
$palavra = "aquecimento";
$query = "SELECT * FROM webqda_fontesInt_text WHERE plainText REGEXP '[[:<:]]" . $palavra . "[[:>:]]' AND projectoId='$projectoId' AND reciclagem='0' AND id='$id' GROUP BY id";
有人可以解釋一下為什么這會返回如下記錄:“aquecimento”,“aquecimentos”,“desaquecimentos”?
我只想返回完全匹配,但它沒有像它應該的那樣工作。
先感謝您!
更多信息
我也可以說“aquecimento。”這樣的話,我想要回歸或“aquecimento!”
最后更新
好的,我能夠看一看並運行一些測試。 最終讓這個工作:
WHERE plainText RLIKE '[ ]".$palavra."[?!.,]?[ ]'
只需在[]內添加更多標點符號,並注意轉義那些需要轉義的項目。
讓我知道任何問題。 (我不知道這是否是處理它的最好方法,但確實有效)。 也就是說,如果有人有任何建議讓我知道,我會相應地修改它。
更新
好吧,做一些閱讀這應該是你正在尋找的:
WHERE plainText REGEXP'\\ s“。$ palavra。”[!。] {1} \\ s'
我不是100%的正則表達式,可能需要調整。 有關我使用MySQL手冊進行REGEXP的信息 。 如果我有機會測試/調整它,我會的。 祝你好運。
舊答案:為什么不使用LIKE
而不是正則表達式?
WHERE plainText LIKE '% ".$palavra." %'
應該這樣做,只需在單詞前后添加空格即可。
你為什么不試試
"REGEXP '\s".$palavra."\s'"
我不明白你的正則表達式,所以,對不起,但我不能回答為什么你匹配“aquecimentos”
我也可以說“aquecimento。”這樣的話,我想要回歸或“aquecimento!”
在這種情況下REGEXP將是:
REGEXP '\s[\"\\']+".$palavra."(!)?[\"\\']+\s'
這意味着,在$ palavra之前和之后都允許“和'。如果!在palavra之后是正確的,那也沒關系。
我沒有測試它,但我認為它會起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.