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

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

相关阅读

数据库操作工具类SqlHelper

2020-10-1057

classSqlHelper{public$conn;public$host=&quot;localhost&quot;;public$username=&quot;root&quot;;public$password=&quot;root&quot;;public$dbname=&quot;mydb&quot;;publicfunction__constr…

纯CSS无表达式实现未知尺寸图片等比缩放(支持IE7及以上)

2020-10-1023

在制作网页的时候,常常会遇到一种情况,我们需要把一些未知尺寸的图片放在一个固定宽高的容器中,这时候我们需要考虑这样的问题:只给图片设置宽度或高度的其中一项可以实现图片等比缩放,但图片可能超出容器大小。给图片设置固定的宽高可能导致图片变形。有些人可能会简单地用JavaScript解决:代码如下:&lt;imgsrc=&quot;image-url.png&qu…

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

2020-10-1061

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

ueditor与umeditor编辑器的各浏览器的问题汇总

2020-10-10127

ueditor的[1.4.3.3PHP版本]UTF-8版的存在的问题1:当编辑器还没有来得及提示“本地保存成功”的就提交表单的话,那么将无法获取编辑器中的内容2:当同一个脚本中有两个UE编辑器时,如果复制一段纯文字到编辑器中,被复制的文字的第一行只显示下面的部分,上面的一部分被隐藏起来,这个现象至少在火狐43.01版本一直到47.02这些版本是至少存在的,火…

小程序倒计时wxml与js

2020-10-1049

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

跳转关系与规则不符要怎么办?

2022-04-4533

为了能够把这个问题解释清楚,这里我用实例来给大家分析一下跳转关系与规则不符的这个问题,一:先来看一下我的新旧url新旧url链接文件:gaiban.txt中的内容域名/productshow.php?id=29域名/sbzsshow.php?id=29域名/productshow.php?id=2域名/cpzsshow.php?id=78二:再来看一下pro…