在codeigniter中搜索超过2个部件名称

时间:2014-05-01 08:36:15

标签: php sql codeigniter

我目前正在寻求在我的网站上实施搜索功能。 我使用1个单词/名称,但我似乎无法弄清楚如何分割和识别搜索字符串的某些部分。

示例:

我的数据库中有一个名为" Steve de Vette"

(我的国家几乎所有名字和姓氏之间都有文字,但并不总是,有时不止一个。例如:" Kees van der Berg")但他的名字当然是分开的在多个部分。 " vNaam"," Tvoegsel"(意思是" de"或"范德")和" aNaam"。

这对我来说有点复杂,因为我现在必须拆分搜索字符串,它本身并不是一个大问题。但我需要知道每次都能得到正确的结果。

所以我想它归结为:我怎样才能让名字被拆分就像它应该的那样,或者可能有一种方法将这些东西全部剥离,但对于我这样的人,我似乎无法弄明白。

非常感谢任何帮助!


编辑:

我尝试过爆炸名称并使用多个OR_LIKE子句进行搜索。这有效,直到我没有" tussenvoegsel"其中一个类似的陈述是" OR anaam LIKE' %%'"

3 个答案:

答案 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)

我所做的是将所有空格一起剥离。我像往常一样在我的数据库中存储空格,但在搜索去除空格时使用替换功能。然后从搜索字段中删除空格,并在右侧使用与外卡相似的内容。我尽量使搜索变得简单。用一个词搜索似乎一起工作得更好所以强迫一个词似乎对我有用。