常用的php正则表达及语法注解总结
基本语法
界定符:
标识一个正则表达式的开始和结束,用'/'或'#'或'{ }',因为语法'{ }'也可能是正则表达式的运算符,为了避免混淆,所以不建议使用。建议的用法如下:
Copy$pattern = '/[0-9]/'; //我喜欢这个,看起来比较简洁 $pattern = '#[0-9]#';
原子:
可见原子:Unicode编码表中可用键盘输出后肉眼可见的字符,例如:标点 ; . / ? 或者英文字母,汉字等等可见字符
不可见原子:Unicode编码表中可用键盘输出后肉眼不可见的字符,例如:换行符 \n,Tab制表符\t, 空格等等,
一般只用这三个(换行符一般和其他字符一起匹配,因为只有换行符是匹配不到的)
小提示:匹配运算符前面需要加 '\' 例如:'+' 号,匹配的话需要写出 '\+'
元字符
原子的筛选方式:
| 匹配两个或者多个分支选择
[] 匹配方括号中的任意一个原子
[^] 匹配除方括号中的原子之外的任意字符;
例子:Duang|duang 或者 [Dd]uang 都可以匹配到Duang和duang
区间写法:[a-z]匹配a到z的字符, [0-9]匹配0到9的字符。也可以[a-z0-9]
. 匹配除换行符之外的任意字符
\d 匹配任意一个十进制数字,即{0-9]
\D 匹配任意一个非十进制数字[^0-9] 相当于[^\d]
\s 匹配一个不可见的原子,即[\f\n\r\t\v]
\S 匹配一个可见的原子,即[\f\n\r\t\v],相当于[\s]z
\w 匹配任意一个数字、字母或下划线,即[0-9a-zA-Z_]
\W 匹配任意一个非数字、字母或下划线,[0-9a-zA-Z_],相当于[\w]
量词
{n} 表示其前面的原子刚好出现了n次。
[n] 表示其前面的原子最少出现n次
{n,m} 最少出现n次,最多出现m次
* 匹配0次、一次或者多次,即{0,}
+ 匹配一次或多次,即{1,}
? 匹配0或1次,即{0,1}
边界控制
^ 匹配字符串开始的位置
$ 匹配字符串结尾的位置
例:^John 可以匹配到:John 但是匹配不到:123John,因为规定了字符串以John开头
模式单元
() 匹配其中的整体为一个原子, 如: (X|x)iaomi , 可以匹配到 xiaomi
修正模式
贪婪匹配
匹配结果存在歧义时取其长(默认)
懒惰匹配
匹配结果存在歧义时取其短,只需在正则表达式的后面'/'加上'U',例如'/[0-9]/U';
例子:
Copy$subject = "test__123123123"; preg_match('/test.+123/', $subject, $matches); //贪婪模式 var_dump($matches); preg_match('/test.+123/U', $subject, $matches); //懒惰模式var_dump($matches);
常见的修正模式:
U 懒惰匹配
i 忽略英文字母的大小写
x 忽略正则表达式的空白符
s 让元字符'.' 匹配包括换行符在内的所有字符
常用函数
preg_match
执行匹配正则表达式
preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) : int
pattern: 要搜索的模式,字符串类型。subject:输入字符串。match: 如果提供了参数matches,它将被填充为搜索结果,数据结构为一维数组。flags: 可以设置为PREG_OFFSET_CAPTURE,使用搜索结果的第0个元素为匹配的字符串,第1个元素为对应的偏移量(位置)offset: 搜索从目标字符串的起始位置开始匹配。
返回值:匹配次数
类似函数preg_match_all,参数与preg_match一致
区别:
preg_match:只匹配一次,搜索结构match的数据结果为一维数组preg_match_all:匹配全部,搜索结果match的数据结构为二维数组。
preg_replace
执行一个正则表达式搜索和替换,返回值为替换后的字符串
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed
pattern:要搜索的模式。可以是一个字符串或字符串数组。replacement:用于替换的字符串或字符串数组subject:要进行搜索和替换的字符串或字符串数组。limit:替换的最大次数。默认是 -1(无限)。count:替换次数。
类似函数preg_filter,参数与preg_replace一致
区别(使用数组进行匹配的时候才看得出区别):preg_replace:不管是否有替换,返回全部结果preg_filter:只返回匹配的结果。
preg_split
通过一个正则表达式分隔字符串
preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) : array
$pattrn:用于搜索的模式,字符串形式。subject:输入字符串limit:将限制分隔得到的子串最多只有limit个,返回的最后一个 子串将包含所有剩余部分。flags:有以下标记的组合:
-- 1. PREG_SPLIT_NO_EMPTY: 返回分隔后的非空部分。
-- 2. PREG_SPLIT_DELIM_CAPTURE: 用分隔符'()'括号把匹配的捕获并返回。
-- 3. PREG_SPLIT_OFFSET_CAPTURE: 匹配返回时将会附加字符串偏移量
PREG_SPLIT_DELIM_CAPTURE这个参数可能比较难明白,举个例子看看:
Copy$subject = "1a23b"; $a = preg_split('/[\d]/', $subject, -1, PREG_SPLIT_NO_EMPTY); var_dump($a); $a = preg_split('/([\d])/', $subject, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); var_dump($a);
输出如下:
array (size=2)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
array (size=5)
0 => string '1' (length=1)
1 => string 'a' (length=1)
2 => string '2' (length=1)
3 => string '3' (length=1)
4 => string 'b' (length=1)
preg_grep
返回匹配模式的数组条目
preg_grep ( string $pattern , array $input [, int $flags = 0 ] ) : array
$pattern:要搜索的模式,字符串形式$input:输入数组flags:如果不设置则返回匹配的数目,设置PREG_GREP_INVERT则返回不匹配的数目。
preg_quote
转义正则表达式字符,返回为转义后的字符串
preg_quote ( string $str [, string $delimiter = NULL ] ) : string
str:输入字符串delimiter:需要转义的字符串
Atas ialah kandungan terperinci 常用的php正则表达及语法注解总结. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Alipay Php ...

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Artikel membincangkan pengikatan statik lewat (LSB) dalam PHP, yang diperkenalkan dalam Php 5.3, yang membolehkan resolusi runtime kaedah statik memerlukan lebih banyak warisan yang fleksibel. Isu: LSB vs polimorfisme tradisional; Aplikasi Praktikal LSB dan Potensi Perfo

Artikel membincangkan ciri -ciri keselamatan penting dalam rangka kerja untuk melindungi daripada kelemahan, termasuk pengesahan input, pengesahan, dan kemas kini tetap.

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...

Artikel ini membincangkan menambah fungsi khusus kepada kerangka kerja, memberi tumpuan kepada pemahaman seni bina, mengenal pasti titik lanjutan, dan amalan terbaik untuk integrasi dan debugging.

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.
