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

所属栏目:建站技术 更新时间:2020-10-30 点击: 文章来源:https://www.sznest.net/jzjs/3528.html

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

所有的标点符号

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

所有的标点经过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,",");

相关阅读

测试document与window与body对象的heigh…

&lt;HTMLxmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;测试document与window与body对象的height与scrollTop方法返回值的区别测试document与window与body对象的height与scrollTop方法返回值的区别$("#btn").click(function…

了解详情 >>

删除bom标签或者bom头的php代码

有时程序的逻辑代码完全没有一问题,但是就是运行的时候出错,如果出现这种情况,那么有可能就是文件中包含了bom头所导致的,下面给出了php去除bom头的源代码,只要把下面的代码放到一个php的文件中,并且改好目录,然后运行那个文件就可以了//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除=&quot;.&quot;;//修改此行为需要检测的…

了解详情 >>

过滤html标签与标签之间的空格以及标签和内容之间的空格

&lt;?phpob_start();?&gt;&lt;pid=&quot;name&quot;&gt;与左边的右尖括号有一个空格喔与右边的左尖括号有两个空格喔&lt;/a&gt;&lt;p&gt;与左边的右尖括号有三个空格喔&lt;/a&gt;&lt;p&gt;只与右边的左尖括号有四空格喔&lt;/a&gt;&lt;p&gt;两边没有空格但是中间有空格喔&…

了解详情 >>

access数据库的表如何导出到excel表?

其实要使access数据库导出到excel中很简单,只需要打开数据库,选中你要导出的表,然后选择菜单下面的外部数据,再选择excel即可,要导出时有两点需要注意,第一,只能单张的一个表一个表的导出,不能导出数据库,第二,一定要确保安装了excel软件,否则在外部数据那里可能找不到excel这个选项其实要导出到excel表还可以有另外一个反过来的办法,就是新建…

了解详情 >>

日期格式如何转换?

日期格式常用的有哪几种?常用的日期格式有YYYY/MM/DD和YYYY-MM-DD,中间的分隔符一般用英文输入法的反斜杠或者短横杠,其中的字母Y是year的简写,表示年,M是month的简写,表示月,D是day的简写,表示日,示例2020/01/01,2020-01-01在excel中如何设置日期格式?在某个单元格内输入上面示例中的任何一种日期格式之后,然后…

了解详情 >>

小程序列表多个批量倒计时

Page({onShow(){letthat=this;vardates={datetime:[{dat:0,name:&#39;zs&#39;},{dat:6,name:&#39;ls&#39;},{dat:10,name:&#39;ww&#39;}]}//console.log(dates)//数据letlen=dates.datetime.length…

了解详情 >>

Copyright @ 2008-2019   www.sznest.net   All rights reserved  网巢网是一家专业为企业提供免费建站、自助建站的模板建站公司     友情链接:香港张元洪律师行   

微信

移动端

客服

顶部