簡體   English   中英

PHP + mySQL - 匹配確切的單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM