当前位置:首页 > 网站技术 > 后端技术 > 正文内容

PHP入门之正则表达式、PHP错误报告

小彬2020-07-24后端技术107

原子:

指正则表达式中不可再分的基本单元


可见原子:普通字符:字母 数字 汉字 符号

特殊字符 / \ . * ? " ' | [] {}  ()


不可见原子:\t 制表符tab

\n 回车


自定义原子:

[abc]:只匹配其中一个原子

[^abc]:只匹配“除了”其中字符的任意一个原子

[0-9]:匹配0-9任何一个数字

[a-z]:匹配小写a-z任何一个字母

[A-Z]:匹配大写A-Z任何一个字母


通用字符原子:

\d:匹配任意一个数字               [0-9]

\D:匹配任意一个非数字             [^0-9]

\w:匹配任意一个数字字母下划线      [0-9a-zA-Z] 

\W:匹配任意一个非数字字母下划线    [^0-9a-zA-Z] 

\s:匹配任意一个空白字符            [\n\f\r\t\v]

\S:匹配任意一个非空白字符          [^\n\f\r\t\v]


元字符:

指那些在正则表达式中具有特殊意义的专用字符

. : 匹配除换行以外的任意字符

| : 匹配多个分支选择



边界限制符:

^:匹配一行的开头位置

$:匹配一行的结束位置

\b:单词边界(只对英语单词有用)

\B:非单词边界



量词:

*:重复零次或多次(>=0)

+:重复一次或多次(>0)

?:重复零次或一次

{n}:重复n次

{n,}:重复n次或更多次

{n,m}:重复n到m次



禁止贪婪

?:当该字符紧跟在任何一个其他限制符(*,+,{n,},{n,m})

U:模式修正符 禁止贪婪


模式单元的三个作用:分组、限制多选结构、捕获文本




/([\u4e00-\u9fa5])\1/g

反向引用:对模式单元中捕获的文本内容的引用

捕获的文本存储在临时缓冲区,缓冲区编号范围为1-99,反向引用格式为:\+编号

非捕获元字符 "?:"


定界符 /xxxxx/

当使用正则函数的时候,模式需要有定界符闭合包裹

分隔符可以使用非字母数字、非反斜线、非空白字符

经常使用的分隔符是正斜线(/)、hash符号(#)以及取反符号(~)。

如果分隔符需要在模式内进行匹配,它必须使用反斜线进行转义


模式修正符

U:禁止贪婪

i:不区分大小写

x:忽略模式中的空白

s:将字符串视为单行,“.”也能匹配换行

m:将字符串视为多行,“^,$”匹配行首行尾


preg_match()

int preg_match(string $pattern,string %subject[,array &$matches])

搜索文本subject与给定的正则表达式pattern的一个匹配

$parrern:要搜索的模式,字符串类型

$subject:输入字符串

$matches:如果提供了参数matches,它将被填充为搜索结果


preg_match_all()

int preg_match_all(string $pattern,string $subject[,array &$matches])

搜索subject中所有匹配给定正则表达式pattern 的匹配结果

$parrern:要搜索的模式,字符串类型

$subject:输入字符串

$matches:多维数组,作为输出参数输出匹配结果


preg_replace()

mixed preg_replace(mixed $pattern,mixed $replacement,mixed $subject)

搜索subject中匹配pattern的部分,以replacement进行替换。

$parrern:要搜索的模式,可以是一个字符或字符串数组

$replacement: 用于替换的字符串或字符串数组

$subject:要进行搜索和替换的字符串或字符串数组


preg_replace_callback()

mixed preg_replace_callback(mixed $pattern,callable $callback,mixed $subject);

指定一个callback替代replacement 进行字符串替换

$parrern:要搜索的模式,可以是一个字符或字符串数组

$callback:一个回调函数,在每次需要替换时调用,调用时函数得到的参数是从subject中匹配到的结果

$subject:要进行搜索和替换的字符串或字符串数组


preg_filter()

mixed preg_filter(mixed $pattern,mixed $replacement,mixed $subject);

preg_filter()类似于preg_replace(),但它仅仅返回与目标匹配的结果

$parrern:要搜索的模式,可以是一个字符或字符串数组

$replacement: 用于替换的字符串或字符串数组

$subject:要进行搜索和替换的字符串或字符串数组




preg_grep()

array preg_grep(string $pattren,array$input[, int $flags =0])

返回给定数组input中与模式pattern匹配的元素组成的数组

$pattern 要搜索的模式,字符串形式

$input 输入数组

$flags PREG_GREP_INVERT 取反 (使用该值时,返回和匹配相反的元素)



preg_split()

array preg_split(string $pattern,string $subject[,int $limit =-1]);

通过一个正则表达式分隔给定字符串

$pattern 要搜索的模式,字符串形式

$subject 输入字符串

$limit 如果指定,将限制分隔得到的子串做多只有limit个



preg_quote()

string preg_quote(string $str[,string $delimiter =NULL])

转义字符串中正则表达式语法中的字符

$str 输入字符串

$delimiter 如果指定了可选参数的limiter,它也会被转义。

正则表达式特殊字符有:. \ + * ? [^] $ () {} = ! < > | : -



 错误报告类型

Notice:通知,比如直接使用未定义的变量,不影响PHP正常流程

Warining:警告,发生了非致命的错误。脚本不会终止运行

Parse error:语法错误,阻止脚本执行

Fatal error :致命错误,阻止脚本执行


错误报告打开和关闭

php.ini的display_errors =On或者Off

代码里ini_set('display_errors',1)或者0



错误报告级别设置

PHP入门之正则表达式、PHP错误报告

php.ini的error_reporting =E_ALL

error_reporting(E_ALL) //显示所有的错误类型

error_reporting(E_ALL ^ E_NOTICE) //除了notice提示之外的所有错误类型

error_reporting(E_ALL &~ E_NOTICE) //除了notice提示之外的所有错误类型


关闭所有的PHP错误报告

error_reporting(0) 


报告所有的错误类型

error_reporting(-1) 

PHP入门之正则表达式、PHP错误报告


log_errors :是否把脚本的错误报告记录到日志里面

error_log:错误报告的日志文件路径


标签: php
分享给朋友:

相关文章

PHPCMS里Apache服务器的伪静态和定制404页面

PHPCMS里Apache服务器的伪静态和定制404页面

1、首先网站根目录要有.htaccess文件,我做的网站服务器是Apache,所以这里就先不讲nginx服务器环境下了,听说nginx环境更简单。 2、然后直接在.htaccess文件配置网...

PHPCMS实现表单提交数据功能

PHPCMS实现表单提交数据功能

PHPCMS实现表单提交数据功能一般的童鞋可能都会遇到明明在后台设置了表单,为啥在前台页面只提交了一次就不能提交了。造成这个原因是因为在phpcms后台表单设置里,默认设置了否的“允许同一IP多次提交...

PHP入门之Linux基础和shell命令行

PHP入门之Linux基础和shell命令行

centos 一般支持10年nubuntu lts 一般支持5年一、linux系统环境搭建wmware 虚拟机下载centos  DVD ISO 或者EVerythine ISO 镜像&nb...

使用火车头采集文章并发布在PHPCMS里(新手看完即会)

使用火车头采集文章并发布在PHPCMS里(新手看完即会)

网上其实有免登录的方法 https://www.gwygd.com/rRz6bMWRO.html但是我用过,发现不能用,所以只好用了登录的方法,所幸成功了。首先下载火车头,里面有phpcms采集文章的...

PHPCMS完成手机端搭建全教程(新手看完即会)

PHPCMS完成手机端搭建全教程(新手看完即会)

注:这篇文章是在我做完一个自适应和一个响应式网站后写的。所以我建议,如果可以的话,最好用@media css做响应式网站,这样就不用考虑手机端的各种问题。因为我当初做的就是自适应,但是没有想到后面的坑...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

分享:

支付宝

微信