PHP中的正则表达式

正则表达式

一.初识SQL注入

SQL注入:

用户输入的数据被当作SQL代码执行

漏洞的认证:

要求能够获取数据或者表库的结构或者绕过登录

过滤:

属于防止黑客攻击的普遍手段

安全和体验性是站在天平的两侧,越是安全的东西体验性越差,越是体验性好的东西,安全越差。

过滤常用的方法:正则表达式(过滤+快速选择找到数据)

 

二.什么是正则表达式

正则表达式,又称规则表达式,计算机科学的一个概念。正则表达式通常被用来检索,替代那些符合某个模式(规则)的文本。

正则表达式的特点时:

  1. 灵活性、逻辑性和功能性非常强
  2. 可以迅速地用极简单的方法达到字符串的复杂控制
  3. 对于刚接触的人来说,比较晦涩难懂

正则表达式用途:

判断字符串是否符合某一规则(判断是否符合手机号、邮箱规则)

从一个字符串中找出符合规则的所有子字符串(获取HTML标签名)

三.PHP中正则表达式常用函数

Preg_match_all(正则表达式,匹配字符串,匹配到的东西放入数组):返回匹配到的次数

Preg_replace(正则表达式,匹配成什么,匹配字符串):返回替换后的结果

替换支持数组格式

四.正则表达式语法

常用转义字符:

数字:\d

非数字:\D

空白字符:\s

非空白字符:\S

单词字符(26个英文字母+数字+下划线_):\w

非单词字符:\w

自定义字符集合:

字符集合:[单个字符或字符区间],用于匹配集合内字符

如:

[a-z]表示a-z26个小写字母

[0-9a-z]表示0-910个数字和a-z26个小写字母

[135a-h]表示包含数字135和字母a-h8个字母

注意:两个不同字符段之间请勿用空格隔开

非集:[单个字符或字符区间],用于匹配非集合内字符。

如:

[^0-9]:表示匹配所有非数字字符

[^a-zA-z]:表示匹配所有非字母字符

正则表达式的语法——关键字

()=>和数学一样,表示这个是个整体

^ => 匹配输入字符串的开始位置

/^a/:匹配以a开头的字符串

$ => 匹配输入字符串的结尾位置

/a$/:匹配以a结尾的字符串

. :任意字符(通配)

* :任意次数

+ :匹配1次或多次

第一个字符必须出现1次或以上

$a = '';

//$a = $_GET['a'];

$b = preg_match_all('/a+/', $a,$demo);

var_dump($demo);

 

$a = '';

//$a = $_GET['a'];

$b = preg_match_all('/a*/', $a,$demo);

var_dump($demo);

\  : 转义字符

|  :两项之间的一个选择

 

网站可以获取访问者的IP

访问者可以通过一些方法来修改自己的IP

写了IP合法的正则表达式:

/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/

    

限定符:

{n} =>例如0{8} 意思是指只有连起来80才会被匹配

{n,} =>例如0{2,} 意思是只要有20及其以上的就会被匹配

{n,m} =>例如0{2.4} 意思是最少匹配20,最多匹配40

注:被匹配时,默认匹配最多的次数

修饰符:

/i =>不区分大小写

/A =>匹配规则必须从头开始匹配

/s =>.将匹配一切字符

/x =>正则表达式中的空白字符会被忽略

posted @ 2021-04-19 22:44  浩琦很好奇  阅读(338)  评论(0编辑  收藏  举报