MySql Regexp从用户输入中搜索

时间:2011-02-07 16:00:32

标签: php mysql regex

这个是杀了我,我是一个正则表达式的正面诺菜。 我试图进行网站搜索,并将输入的文本与中的标题列进行比较 数据库。 基本上我想用正则表达式完成的是 LIKE'%word1 word2 word3%',但是有一些字符串变量。

例如:

  

SELECT * FROM表WHERE标题REGEXP   'W [AO] RD'

工作得很好。它寻找单词和病房。但是,当我想要多个单词时,它什么都不返回。

  

SELECT * FROM表WHERE标题REGEXP   'w [ao] rd sec [或] nd th [io] rd'

我不想搜索单词或第二个或第三个我希望将它们全部放在标题中,就像LIKE中的大写一样。

我想可能会爆炸用户输入的搜索字符串,然后在foreach中逐字逐行地执行regexp,但不知道如何将所有变体连接到一个查询中。

编辑: 我忘了提到我在utf8_unicode_ci整理表中搜索。 所以我真的试图做一个[cčć] orak类型的搜索。

1 个答案:

答案 0 :(得分:2)

   SELECT * FROM table WHERE title REGEXP 'w[ao]rd|sec[or]nd|th[io]rd'

编辑:

“好的,所以你希望他们都按标题和顺序排列?”

   SELECT * FROM table WHERE title REGEXP 'w[ao]rd.*sec[or]nd.*th[io]rd'

这将查找这些单词(和变体)并使它们按顺序排列,例如

word blahblah second more blah third