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

栏目:建站技术 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-1060

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…

帝国CMS-采集关键的经验总结

2020-10-1025

采集关键的几个步骤一:先建好栏目二:增加采集节点(需要选择栏目)三:录入节点名称四:如果有很多页,只需录入采集页面地址方式二中的内容地址为http://www.sznest.net/news.asp?big_class_id=3&amp;page=[page]页码从1到多少页之间、间隔倍数为1(这个多少页即被采集的网站的实际页数,注意这里修改后,在采集页面地…

asp用正则批量替换过滤表中所有行的内容中的图片

2020-10-1025

SetHF=NewRegExp&#39;建立正则表达式。HF.Pattern=&quot;《img[^&gt;]*&gt;&quot;&#39;设置模式、《请替换成英文的左尖括号。HF.IgnoreCase=True&#39;设置是否区分字符大小写。HF.Global=True&#39;设置全局可用性。Setconn=Server.CreateObject(…

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

2020-10-10115

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

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

2020-10-10127

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

FTP上的文件不宜在线编辑

2022-04-4673

知道FTP软件使用的都知道,打开软件登录某一空间后,一边是本地的文件,另一边是服务器上的文件,而FTP软件就是连接本地与虚拟主机的桥梁,因为有了该软件,线上线下的上传下载就显得非常的简单。一般情况下,如果要对服务器上的文件进行修改,可以先将其下载到本地,再用dr将其打开进行编辑,待编辑到满意后,再上传上去,覆盖以前的文件,或是将以前的文件改个名字,直接上传上…