分享

php自动搜索关键字

 丶平上 2019-06-24
/**
* 自动识别关键词方法
* @param String $text 需要查询的文本
* @param String $keysStr 用来标记的关键词字符串
* @param Int $similar 可以插入的关键词相似度 默认60%
* @return Array
*/
function searchKeys($text = "",$keysStr = "",$similar = ""){
//关键词相似度
$similar = $similar == null ? 60 : $similar;
//组装特殊字符,并替换
$Exp = str_replace(array(":","。",'"',"/","-","_","=","~","`","(",")","*","&","^","%","$","#","@","!",":",":","、","“",".","”",";","】","【","[","]","|",'\/'," "," ","'",""","<",">","?","/","]","[","!","@","#","$","%","^","&","*","(",")","_","+","=","-","/","*","-","+",".","`","~",";",":","'",""","|","\"),"",strip_tags($text));
$Exps = str_replace(",",",",$Exp);

//将切割的文字组装成数组
$textArr_1D = explode(",",$Exps);
//将内容转换成二维数组
$textArr_2D = array();
foreach($textArr_1D as $val){
$textArr_2D[]['text'] = $val;
}
//去除关键词的最后一位
$keysStr = substr($keysStr,0,strlen($keysStr)-1);
//切割关键词成一维数组
$keysArr_1D = explode(",",$keysStr);
//转换成二维数组
$keysArr_2D = array();
foreach ($keysArr_1D as $val) {
$keysArr_2D[]['keys'] = $val;
}
//开始匹配关键词
foreach ($textArr_2D as $t_k => $t_v) {
foreach ($keysArr_2D as $k_k => $k_v) {
//判断关键词不为空
if($k_v['keys'] != ""){
//根据文本相似度
if(similar_text($t_v['text'],$k_v['keys'],$percent)){
//当相似度大于等于**时插入到数组
if($percent >= $similar){
$data[]['keys'] = $k_v['keys'].$percent."%";
}
}
//不区分大小写寻找相同字符
if(stristr($t_v['text'],$k_v['keys']) != false){
$data[]['keys'] = $k_v['keys'];
}
//区分大小写寻找相同字符
if(strpos($t_v['text'],$k_v['keys']) != false){
$data[]['keys'] = $k_v['keys'];
}
}
}
}
return array_unique_fb($data);
}
/**
* 数组去重方法
*/
function array_unique_fb($array2D){
foreach ($array2D as $v){
$v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
$temp[] = $v;
}
$temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
foreach ($temp as $k => $v){
$temp[$k] = explode(",",$v); //再将拆开的数组重新组装
}
return $temp;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多