php mysql 检测字段中相同的关键字,不要模糊查询。

表A字段idtitle1上海百度科技有限公司2北京百度科技有限公司3沈阳知道实业有限公司4南京谷歌贸易有限公司5武汉海尔工程有限公司6青海大众文化传播有限公司7山东济南格... 表A字段 id title
1 上海百度科技有限公司
2 北京百度科技有限公司
3 沈阳知道实业有限公司
4 南京谷歌贸易有限公司
5 武汉海尔工程有限公司
6 青海大众文化传播有限公司
7 山东济南格瑞特科技实业有限公司

例如以上字段中的内容有什么好的办法首先排除掉地区名称,和有限公司 以及实业,贸易,科技,等类型的公司。 只留真正的名称,然后把所有字段中相同的列出来。

因为公司现在CRM中有很多重复的公司名称,但是公司名称又不统一,有的可能是简写,例如

上海百度

有的则写的是上海百度科技有限公司。哪位高手有办法把重复的关键字列出来吗?

不要手动输入关键字模糊查询的。 要求运行PHP 就能够将所有相同关键字的公司都列出来。
请给出实例,谢谢了!如果能用, 另外补200分。到时候给链接,随便回答,马上采纳送200分。
展开
 我来答
lin20090369
2014-04-09 · TA获得超过153个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:129万
展开全部
$rows=$db->select('b','id,title');
$area_str=array( "上海" ,  "北京" ,  "沈阳" ,  "南京" ,  " 武汉","青海" ,"山东","济南","武汉");//地区关键字
$key_str = array("有限公司" ,  "实业" ,  "贸易" ,  "科技","工程" );//名称关键字
$str=array_merge($area_str,$key_str);//合并数组


$arr=array();
foreach($rows as $row){
     $title  =  str_replace ( $str ,  "" , $row['title'] );
     $arr[$row['id']]=$title;//将对应的id和替换的title加进数组
}
//接下来,对比$arr数组的重复的元素,并取出指定的key值,然后到数据库查询指定id即可
更多追问追答
追问
您好,请写个完整的简单的例子吗! 谢谢了!
追答

好吧,那我写完整一点

$rows=$db->select('b','title');//查询title数据
$area_str=array( "上海" ,  "北京" ,  "沈阳" ,  "南京" ,  " 武汉","青海" ,"山东","济南","武汉");//地区关键字
$key_str = array("有限公司" ,  "实业" ,  "贸易" ,  "科技","工程" );//名称关键字
$str=array_merge($area_str,$key_str);//合并数组

$arr=array();
foreach($rows as $row){
     $title  =  str_replace ( $str ,  "" , $row['title'] );
     $arr[]=$title;//将替换的title加进数组,得到真正的名称 
}
$arr_un=array_unique($arr);
$arr_assoc=array_diff_assoc($arr,$arr_un);
//在数据库查询重复着
foreach($arr_assoc as $key){
   $row_key=$db->select_key($key);
}
print_r($row_key);//输入重复的列

 

mysql  我用的是pdo连接:

查所有title数据:
    function select($table,$Column='*'){ //查询指定列的信息
       return $this->pdo->query("select $Column from $table")->fetchAll();   
    }   
查询重复值:
    function select_key($key){
        return $this->pdo->query("select title from b where title like '%$key%'")->fetchAll(); 
    }
GUOYYYY
2014-04-09 · TA获得超过521个赞
知道小有建树答主
回答量:506
采纳率:0%
帮助的人:283万
展开全部
步骤:
1、取出所有数据;
2、str_replace(array_merge(array('北京','上海',...),array('有限公司','实业','贸易','科技')),'',$row['title']);
去掉公司名称中的字,当然,想要去掉所有地区名称的话要有所有地区名称的数据;

3、这样就得到了所有去除特殊字之后的名称,然后进行比较或者其他都是很方便的了。

有其他不清楚的继续问哦。
追问
您好,请写个完整的简单的例子吗! 谢谢了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式