过滤所有标点符号的函数详解

栏目:建站技术 2020-10-30

为了避免用户输入的一些特殊标点对数据查询造成干扰,所以对特殊的标点符号的过滤是很有必要,下面是过滤所有标点符号这个函数的详细说明

所有的标点符号

~|`|!|@|#|$|%|^|&|'|*|(|)|+|||\|=|\-|_|[|]|}|{|;|"|:|?|>|<|,|\.|/|��|��|��|��|��|��|}|��|��|��|��|��|��|��|��|��|��|��|��|��|��|��|。|!|,|;|?|:|、|……|”|“|‘|’|~|.|(

所有的标点经过urlencode编码之后的效果
%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%AD|%A3%A4|%A1%A4|%A3%A1|%E3%80%82|%EF%BC%81|%EF%BC%8C|%EF%BC%9B|%EF%BC%9F|%EF%BC%9A|%E3%80%81|%E2%80%A6%E2%80%A6|%E2%80%9D|%E2%80%9C|%E2%80%98|%E2%80%99|%EF%BD%9E|%EF%BC%8E|%EF%BC%88

如果要将上面的解码还原成标点符号,需要使用UrlDecode函数

[[:punct:]]这个是PHP的正则表达式内置的其中一个通用字符簇,意思是任何标点符号


函数代码及其注释

function punctFilterTage($text,$punctStr=","){
    //先将字符串中的所有标点符号全部作替换处理
    $text=preg_replace("/[[:punct:]\s]/",$punctStr,$text);
    //echo $text."<br/>";
    //接下来对上面的字符串进行url编码,为什么要编码就是为了防止中文乱码
    $text=urlencode($text);
    //echo $text."<br/>";
    //url编过码之后作正则替换处理
    $text=preg_replace("/(%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%AD|%A3%A4|%A1%A4|%A3%A1|%E3%80%82|%EF%BC%81|%EF%BC%8C|%EF%BC%9B|%EF%BC%9F|%EF%BC%9A|%E3%80%81|%E2%80%A6%E2%80%A6|%E2%80%9D|%E2%80%9C|%E2%80%98|%E2%80%99|%EF%BD%9E|%EF%BC%8E|%EF%BC%88)+/",$punctStr,$text);
    //url解码,即还原,上面正则表则式中的+号是贪婪匹配,比如在$text中有连续多个%2C时,比如%2C%2C%2C,那么匹配就是贪婪的,%2C就可以匹配到%2C%2C%2C,而不是%2C,所以即使传进来的如果有多个标点符号连在一起的情况下,最后都只会被替换成一个英文的逗号,这里要注意,可以用a,b,c,,,d这个来测试
    //echo $text."<br/>";
    $text=urldecode($text);
    //echo $text."<br/>";
    return $text;
}
$str = "a,b,c,,,d";
echo punctFilterTage($str,",");

相关阅读

用火狐打开百度一直加载s1.bdstatic.com的解决办法

2020-10-10737

一直用火狐浏览器,火狐浏览器插件多,很合适网页开发人员使用,以前一直用的好好的,但是今天使用的时候突然发现没有以前好用了,打开百度的官网一直很卡,通过FIREBGU发现在打开百度官网的时候一直会加载s1.bdstatic.com这个网站,无语,怎么打开百度的官网还需要链接s1.bdstatic.com这个网站这个网站吗?难道是百度被黑了,或者是自己的浏览器被…

正则表达式收集汇总

2020-12-12101

搜索:empty(($)tr[&#39;([a-z]{1,})&#39;]),可以查找这样的empty($tr[&#39;digest&#39;]),然后可以替换成!$digest替换:!$1$2匹配A标签的超连接的正则表式如下$pattern=&quot;/&lt;a[^&gt;]+?href=[&quot;&#39;]?([^&quot;&#39;]+)…

如何让你的PHP网站变得更安全

2020-10-10105

安全配置一(1)打开php的安全模式php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,但是默认的php.ini是没有打开安全模式的,我们把它打开:safe_mode=on(2)用户组安全当safe_mode打开时,sa…

小程序的下单与支付的业务流程

2020-10-10243

1:小程序携带商品信息调用第三方服务器的下单API2:第三方服务器下单API对小程序带来的商品作库存量检测3:如果检测通过,第三方服务器就会保存这个订单并且告之小程序下单成功4:小程序调用第三方服务器的支付api5:第三方服务器API调用微信的预订单API[WxPayApi::unifiedOrder](注意第三方服务器是无法完成支付的,这个订单实际是在微信…

为什么小程序的页面有二次跳转时会瞬间显示一下第一次的页面再跳转呢?

2020-10-10469

为什么小程序的页面有二次跳转时会瞬间显示一下第一次的页面再跳转呢?navigateToredirectToswitchTabtabBar先来看示例代码并且在微信开发者工具上测试下面看示例代码共有三个页面,分别是indexproductshowcartindex的js与wxmlPage({/*跳转到商品详情*/toProductshow:function(ev…

如何解决QQ显示未启用的问题

2024-08-8286

没设置临时会话,一般都会出现下面的状况。QQ放在网站上作为客服,必须设置临时会话。或者点击之后,要求加为好友才可以对话。解决这个问题的步骤如下:一、登陆腾讯官方网站:http://wp.qq.com/二、登陆之后,点“设置”,按下图所示,全部打勾。这个必须设置,不设置,不能临时会话,就会显示“未启用”。这一步是关键,必须设置。(1)先看服务有没被停用:如停用…