PHP - 搜索名字和全名

Posted

技术标签:

【中文标题】PHP - 搜索名字和全名【英文标题】:PHP - Search first names as well as full name 【发布时间】:2016-07-26 02:42:06 【问题描述】:

目前我的代码搜索数据,但您需要输入全名才能显示结果。我想我需要将我的全名分成名字和姓氏。所以任何一个都可以搜索找到。

我希望它根据全名或名字查找和显示配置文件

-我需要它来显示那个名字的人的结果。但是在我的 csv 文件(存储数据的地方)中,存储了全名,例如“鲍勃·杰拉德”

我猜我也需要在循环中分隔值来搜索名字?我不太确定.. 任何帮助将不胜感激。

这是我所拥有的:

//This gathers the values from the form (search bar) and assigns it to the variable $SearchThis
//isset()
$SearchThis = isset($_POST['Search']) ? $_POST['Search'] : '';
//empty()
$SearchThis = !empty($_POST['Search']) ? $_POST['Search'] : '';



// Grabs the csv file (and its existing data)  and makes it into an array
$csv = array();
$lines = file('data/StaffData.csv', FILE_IGNORE_NEW_LINES);
foreach ($lines as $key => $value)

    $csv[$key] = str_getcsv($value);




//A new array which will display the search results
$new_csv = array(); 

//This displays which rows have matched the search (it is put in an array)

//Looks through full names
$keys = array_keys(array_column($csv, 0), $SearchThis);  //  original code
foreach($keys as $index)                                // Iterate over the keys
    $new_csv[] = $csv[$index];                           // Copy the matching rows to our new array

//Looks through phone numbers
$keys = array_keys(array_column($csv, 1), $SearchThis);  // original code
foreach($keys as $index)                                // Iterate over the keys
    $new_csv[] = $csv[$index];                           // Copy the matching rows to our new array

//Looks through gender
$keys = array_keys(array_column($csv, 2), $SearchThis);  // original code
foreach($keys as $index)                                // Iterate over the keys
    $new_csv[] = $csv[$index];                           // Copy the matching rows to our new array

//Looks through Birthday
$keys = array_keys(array_column($csv, 3), $SearchThis);  // original code
foreach($keys as $index)                                // Iterate over the keys
    $new_csv[] = $csv[$index];                           // Copy the matching rows to our new array


//Looks through Type of work
$keys = array_keys(array_column($csv, 4), $SearchThis);  // original code
foreach($keys as $index)                                // Iterate over the keys
    $new_csv[] = $csv[$index];                           // Copy the matching rows to our new array

【问题讨论】:

【参考方案1】:

请用这个在fullname栏搜索:

$new_csv = array_filter($csv, function ($item) use($SearchThis) 
    //Match the full name
    if ($item[0] === $SearchThis) 
        return true;
    
    //Split the fullname by space characters into array
    //and see if it contains the $SearchThis 
    return in_array($SearchThis, preg_split("/[\s]+/", $item[0]));
);

希望对你有帮助。

【讨论】:

你这个传奇!这正是我所追求的。很有魅力。我也喜欢它的出发方式,因为它对我来说很有意义。谢谢,

以上是关于PHP - 搜索名字和全名的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 列表或分解函数拆分全名

将全名分为名字和姓氏 MySQL

如何在 PHP 登录脚本中验证来自 SQL 的串联?

从表中复制全名并将名字和姓氏插入新表的单独列中

有个叫啥fox的搜索引擎全名叫啥?

html 显示当前用户名字/姓氏/全名/电子邮件/公司