如何基于用户输入的职位关键词从预生成数组中检索匹配数据?
职位检索功能实现方案
你已经完成了文本数据读取到二维数组的逻辑,在此基础上增加检索功能只需要补充关键词匹配逻辑即可,默认你读取的$allData子数组的第一个元素为职位名称字段,可根据你实际的字段顺序修改索引值。
实现步骤如下:
- 优化原有参数校验逻辑,避免参数不存在时抛出PHP notice报错
- 对用户传入的职位关键词做预处理,去除首尾空格,默认设置不区分大小写匹配,提升检索体验
- 遍历已生成的
$allData数组,使用字符串匹配函数判断当前条目职位是否包含用户输入的关键词 - 收集所有匹配成功的条目输出即可
修改后的完整代码如下:
<?php // 优化原有参数校验逻辑 if (isset($_GET['job_title']) && !empty($_GET['job_title'])) { // 处理用户输入的关键词,去除首尾空格 $job_title = trim($_GET['job_title']); echo "检索关键词:" . $job_title . "<br>"; $filename = __DIR__ . '/jobpost.txt'; $matchedResult = []; // 存储匹配结果的数组 if (file_exists($filename)) { $allData = array(); $handle = fopen($filename, "r"); while (!feof($handle)) { $onedata = fgets($handle); if ($onedata != "") { $data = explode("\t", $onedata); $allData[] = $data; // 新增匹配逻辑:默认职位为子数组的第0个元素,可根据实际字段顺序修改索引值 // 使用stripos实现不区分大小写的模糊匹配 if (isset($data[0]) && stripos($data[0], $job_title) !== false) { $matchedResult[] = $data; } } } fclose($handle); // 关闭文件句柄 // 输出匹配结果 echo "<h3>匹配到的相关条目:</h3>"; echo "<pre>"; if (!empty($matchedResult)) { print_r($matchedResult); } else { echo "未找到匹配的职位信息"; } echo "</pre>"; } else { echo "文件不存在"; } } else { echo "<p class=\"bg_danger\">请输入职位名称</p>"; } ?>
你可以根据需求调整匹配规则:如果需要精确匹配,把匹配逻辑改成$data[0] == $job_title即可;如果需要区分大小写,把stripos换成strpos即可。
内容的提问来源于stack exchange,提问作者Elham
相关产品推荐
相关产品推荐

