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

栏目:建站技术 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,",");

相关阅读

中英文混和的字符串的ASCII与UNICODE编码与解码

2020-10-10184

//1:获取中英文混合字符的编码(ASCII码与UNICODE码)$str=&quot;官网制作:网巢网络&quot;;foreach(math($str)as$key=&gt;$value){if(preg_match(&#39;/^[x{4e00}-x{9fa5}]+$/u&#39;,$value)){//中文,注意中文这里暂时不转换,因为无法通过chr…

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

2020-10-10721

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

如何解决网站上传大文件的问题?

2020-10-10119

为了服务器的网络安全,避免因为超大文件导致服务器故障,所以对文件上传的大小限制是很有必要的,但是有些客户又有上传大文件的需求,比如上传pdf或者压缩包这种格式的文件,那么碰到这种情况下,如何解决这个问题呢?在浏览器输出phpinfo();查看LoadedConfigurationFile这个参数可以获取php.info的文件位置1:如果上传的文件太大,会导致…

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

2020-10-10221

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

小程序倒计时wxml与js

2020-10-1069

小程序倒计时jsPage({data:{windowHeight:654,maxtime:&quot;&quot;,isHiddenLoading:true,isHiddenToast:true,dataList:{},countDownDay:0,countDownHour:0,countDownMinute:0,countDownSecond:0,},/…

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

2024-08-8247

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