烦人的正则表达式(三)

JavaScript是前端语言,前端的正则表达式过滤一般是识别用户手误输入不合规范的信息并提醒用户重新输入,进而减少与后端的数据交互,减轻浏览器负担。但对于那些故意要输入恶意信息的人而言,绕过前端正则的束缚过于简单,所以我们需要对一些敏感的输入点进行服务器层面的过滤。

PHP是后端语言,超文本预处理器,一般运行在网页服务器上,可以接收表单数据或其他传入参数。鉴于不要信任任何用户的输入这个原则,建议对这些参数进行过滤再进行接收使用。过滤不完全会造成极大的安全漏洞,如SQL注入,文件上传等。

这里我们介绍的是PHP的正则表达式相关函数,语句结构见以往系列。

PHP

preg_match() -- 执行匹配正则表达式

简单举例:

简单的判断是否匹配成功,匹配成功一次后就会停止搜索,返回成功值1,如果匹配失败,返回0。其中$patt为要搜索的字符串,sub为文本。

pregmatchall() -- 循环获取一个列表的匹配结果数据。

该函数会一直匹配直到结尾。

最终会调用print_r()打印出完整的数组结果。

preg_quote() -- 转义正则表达式字符

该函数会在文本内的正则表达式特殊符号前加上反斜线

后一个参数可以可选,为自定义参数,然后函数会在该参数前加上反斜线。

扩展

ereg() -- 搜索匹配字符串中是否有指定参数,匹配成功返回true,失败返回false。搜索字母的字符串是大小写敏感的。用法与preg_match()函数相似,返回值不一样。

然后值得注意的是,preg家族与ereg家族有许多共同之处,但PHP5.3之后,ereg家族就渐渐被取代了,而PHP7移除了一些函数,包括mysql函数和ereg家族。(我被坑过,建议大家养成用preg的习惯)。

为什么被移除的是ereg而不是preg?

1,ereg函数不能使用间隔符和修饰符。即不能使用

2, ereg函数使用的是贪婪模式,且不支持修改。贪婪模式会尽可能多地查找匹配字符,一直找到最后,其匹配结果往往是倒着往前匹配得到的。因此,ereg往往比preg更耗时,且实用性略低。

3,preg使用起来比ereg更方便,功能更强大。(更多理由是我难以把网络上篇幅巨大的文章整理成大家愿意看且接受的段落)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181124G1GBO500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券