PHP初级【10天小积累-第六天】

在这里插入图片描述

PHP正则表达式-6

首先说一下他的用处

正则表达示我们其实之前经常看到,它主要用在以下一些地方:
1.匹配邮箱、手机号码、验证码
2.替换敏感的关键词。例如:涉及政治和骂人的话【当你在网站上进行评论或者留言的时候,你评论xx或者留xx什么的,这时候xx这两个字会被替换掉成新号,那么形成这一个识别的功能的就是我们的正则表达式】
3.文章采集。
4.早期的表情替换技术,ubb文件编码、markdown 编辑器替换等
5.以后自己写模板引整也需要用到正则表达示 其他

PHP正则表达式的定界符

那么这个定界符和我们变量所用的单引号和双引号是有一定类似的

为什么怎么说呢

我们的变量是这样的

a = a 或者 a=a 或者 a=a或者a='a’再或者$a=“a”

$foo = 2; 
echo "foo is $foo"; // 打印结果: foo is 2 
echo 'foo is $foo'; // 打印结果: foo is $foo 
echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) 
echo 'foo is $foo\n'; // 打印结果: foo is $foo\n 
$foo = 2; 
echo "foo is $foo"; // 打印结果: foo is 2 
echo 'foo is $foo'; // 打印结果: foo is $foo 
echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) 
echo 'foo is $foo\n'; // 打印结果: foo is $foo\n    

那么我们正则表达式也类似这样

需要有开头符号和结尾的

@正则写中间@

#正则写中间#

%正则写中间%

正则写中间

&正则写中间&

(正则写中间)

A正则写中间A

这就是正则的大概书写格式

他必须要以对称形式出现

注:\是转义字符

PHP正则表达示中的原子

PHP正则表达示中的原子是PHP正则表达式中的最小单位

原子说白了就是需要匹配的内容

那么所有的可以看见和不可以看见的字符都是原子

空格,逗号,句号等字符都是原子

用到preg_match来进行演示

<?php
    $a='@s@';
    $b='s';
    //首先我们的变量a是我们正则表达式,其中的@s@就是原子,你可以理解为规则
    //那么我们的$b是我们给正则表达式的匹配内容,这个就是类似我们的评论和留言了,类似目标
    //变量c就是返回的结果
    if(preg_match($a,$b,$c)){
        echo '匹配成功';
        var_dump($c);
    }else{
        echo '匹配失败';
    }
    ?>

如果你不想看返回的值就去掉

<?php
    $a='@s@';
    $b='s';
    //首先我们的变量a是我们正则表达式,其中的@s@就是原子,你可以理解为规则
    //那么我们的$b是我们给正则表达式的匹配内容,这个就是类似我们的评论和留言了,类似目标
    //变量c就是返回的结果
    if(preg_match($a,$b)){
        echo '匹配成功';
//        var_dump($c);
    }else{
        echo '匹配失败';
    }
    ?>
<?php
    $a='@xx@';
    $b='我xxx的,x东西你是不是xx';
    //首先我们的变量a是我们正则表达式,其中的@s@就是原子,你可以理解为规则
    //那么我们的$b是我们给正则表达式的匹配内容,这个就是类似我们的评论和留言了,类似目标
    //匹配到了xx
    if(preg_match($a,$b)){
        echo '匹配成功';
//        var_dump($c);
    }else{
        echo '匹配失败';
    }
    ?>

特殊识别的原子

\d匹配0-9
\D除了0-9以外所有字符
\wa-z A-Z 0-9_
\W除了a-z A-Z 0-9_以外所有字符
\s匹配所有空白字符串\n \r \t 空格
\S匹配所有非空白字符
[]指定范围的原子
<?php
    $a='$\d$';
    $b='我要喝9,是不是不给我喝';
    if(preg_match($a,$b,$c)){
        echo '匹配到了';
        var_dump($c);
    }else{
        echo '没有匹配到';
    }
    ?>

抑扬符号

^抑扬符号就是不准以空格里面的字符进行匹配

\d[0-9]
\D[^除了0-9]
\w[a-z A-Z 0-9_]
\W[^a-z A-Z 0-9_]
\s[\n \r \t ]
\S[^\n \t \r]

元字符

在这里插入图片描述

{2}只能出现两次

<?php
    $a='$\d{2}$';
    $b='我要喝999,是不是不给我喝';
    if(preg_match($a,$b,$c)){
        echo '匹配到了';
        var_dump($c);
    }else{
        echo '没有匹配到';
    }
    ?>

{1,}至少一次

<?php
    $a='$\d{1,}$';
    $b='我要喝999,是不是不给我喝';
    if(preg_match($a,$b,$c)){
        echo '匹配到了';
        var_dump($c);
    }else{
        echo '没有匹配到';
    }
    ?>

PHP正则表达示中的模式修正符

i模式中的字符将同时匹配大小写字母
m字符串视为多行
s将字符串视为单行,换行符作为普通字符
X将模式中的空白忽略
A强制仅从目标字符串的开头开始匹配
D模式中的美元元字符仅匹配目标字符串的结尾.
U匹配最近的字符串
<?php
    //后面放模式匹配符
    $a='$abc$i';
    
    $b='我要喝9,1是不是不给我喝ABC';
    if(preg_match($a,$b,$c)){
        echo '匹配到了';
        var_dump($c);
    }else{
        echo '没有匹配到';
    }
    ?>
php中常用的正则表达式函数 
* preg_match() 
* preg_match_all() 
* preg_replace() 
* preg_filter() 
* preg_grep() 
* preg_split() 
* preg_quote()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无聊的知识

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值