我目前正在寻求在我的网站上实施搜索功能。 我使用1个单词/名称,但我似乎无法弄清楚如何分割和识别搜索字符串的某些部分。
示例:的
我的数据库中有一个名为" Steve de Vette"
(我的国家几乎所有名字和姓氏之间都有文字,但并不总是,有时不止一个。例如:" Kees van der Berg")但他的名字当然是分开的在多个部分。 " vNaam"," Tvoegsel"(意思是" de"或"范德")和" aNaam"。
这对我来说有点复杂,因为我现在必须拆分搜索字符串,它本身并不是一个大问题。但我需要知道每次都能得到正确的结果。
所以我想它归结为:我怎样才能让名字被拆分就像它应该的那样,或者可能有一种方法将这些东西全部剥离,但对于我这样的人,我似乎无法弄明白。
非常感谢任何帮助!
编辑:
我尝试过爆炸名称并使用多个OR_LIKE子句进行搜索。这有效,直到我没有" tussenvoegsel"其中一个类似的陈述是" OR anaam
LIKE' %%'"
答案 0 :(得分:0)
你可以使用PHP字符串搜索功能。
$pos = strpos($string, $character);
您可以使用它来查找名称中的第一个空格。因此,如果您选择“Steve de Vette”,您可以先找到Steve作为名字,然后再搜索其余的字符串,或者将剩下的字符串作为姓氏。
这是从我自己的网站上获取的一段代码。
$fname = strstr($entry," ",true); <-- finds the first name (all characters up to the first space)
$len = strlen($fname) + 1; <-- skips over the space to the last name
$entrylen = strlen($entry); <-- gets the length of the search string used
$sname = substr($entry, $len, $entrylen); <-- gets the rest of the string (last name)
希望您能找到这个有用的
答案 1 :(得分:0)
使用explode拆分字符串并搜索第一个和最后一个项目。
$string1 = "Steve de Vette"; $string2 = "Kees van der Berg"; $ex1 = explode(" ", $string2); $nr = count($ex1); echo $ex1[0]; //firstname echo ' '; echo $ex1[$nr-1]; //lastname
答案 2 :(得分:0)
我所做的是将所有空格一起剥离。我像往常一样在我的数据库中存储空格,但在搜索去除空格时使用替换功能。然后从搜索字段中删除空格,并在右侧使用与外卡相似的内容。我尽量使搜索变得简单。用一个词搜索似乎一起工作得更好所以强迫一个词似乎对我有用。