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以外所有字符 |
\w | a-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()