php过滤所有英文中文的标点符号代码

最近公司要求网站的搜索功能增加将关键字过虑所有标点符号(包括中英文标点符号)后再进行数据库的查询操作,心想这还不容易,PHP的强大函数立即体现,PHP就是强大(哈哈,跑题了),一个正则搞定。
例子:
$keyword='阿’凡;提,美。食,城 ';
$keyword=preg_replace("/[~`!@#$%^&*()_+|\=-}{[]":;'?><,./?》《,。、“”:;‘’=—()|…¥·!]+/",'',$keyword);
echo $keyword;
//输出结果:阿凡提美食城
是不是很简单?我也以为是这么简单,但接下来郁闷了。
  某些文字过虑后出现了乱码,例如:海、厅等等,经研究发现,这些中文与某些中文的标点符号的部分编码是相同的,所以过虑后造成文字不完成而乱码。
去掉这些中文标点符号是可以解决问题,但就达不到过虑效果了。
  郁闷了两天,今天一早突发灵感,居然是文字与标点符号编码的某部分相同被过滤了,那么将他们先编码后,用正则完成匹配标点符号的编码才过滤就可以啦。想到就做。
将所有标点符号先编码,每个符号的完整编码用(|)隔开,如下:%7E|%60|%21|%40|%23|%24|%25|%5E|%26|%27|%2A|%28|%29|%2B|%7C|%5C|%3D|\-|_|%5B|%5D|%7D|%7B|%3B|%22|%3A|%3F|%3E|%3C|%2C|\.|%2F|%A3%BF|%A1%B7|%A1%B6|%A1%A2|%A1%A3|%A3%AC|%7D|%A1%B0|%A3%BA|%A3%BB|%A1%AE|%A1%AF|%A1%B1|%A3%FC|%A3%BD|%A1%AA|%A3%A9|%A3%A8|%A1%
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值