原理
1.获取请求文字$search
的字符长度(注意:一个文字占三个字符)
2.把要查询的语句$words
,用str_split ($string, $split_length = 1)
做字符串切割
- 切割之后做遍历,值与请求文字
$search
比较,正确则表示语句中存在要查找的文字
4.如果没找到,则从第二个文字开始做切割匹配。直到匹配成功为止
测试数据
$test_list = [
['test_name'=> '爱看啥的的', 'test_id'=> '1'],
['test_name'=> '阿达撒发', 'test_id'=> '2'],
['test_name'=> '是发送到吃饭', 'test_id'=> '3'],
['test_name'=> '广东省反倒是', 'test_id'=> '4'],
['test_name'=> '徐达热网示范区', 'test_id'=> '5'],
['test_name'=> '分析师范生', 'test_id'=> '6'],
];
$api_test_list = [
'test' => $test_list,
];
搜索函数
/** 遍历切割文字
* @param $words 需要匹配的文字
* @param $split_num 每几个字符做一次切割,一个中文文字是3个
* @param $search 需要匹配的文字
* @return bool true是匹配成功,false是匹配失败
*/
function word_split($words,$split_num,$search)
{
if (strlen($words) <3) return false; // 如果小于3个字符,则表示遍历完毕,返回false
foreach (str_split($words,$split_num) as $value){
if ($search == $value) return true;
// 如果没有取到值,从第二个字开始切割
return word_split(substr($words,3),$split_num,$search);
}
return false;
}
打印结果
图片.png- 还有一种更简单的方法就是
strstr
或者strpos
这类函数,查找在某个字符串中出现的位置,是否出现
function get_search_game($search,$data_list)
{
$search = trim($search); // 查询内容
$search_res = []; // 搜索结果
foreach ($data_list as $number){
// 函数搜索字符串在另一字符串中的第一次出现。
if (strstr($number['data_name'],$search)){
// 如果匹配成功
$search_res[] = $number;
}
}
return $search_res;
}
网友评论