没有金刚钻,别揽瓷器活!正则使用方便也有性能隐患!!!
PHP 正则替换
正则中的一些概念
元字符.
匹配除换行符意外的任意字符
\w
匹配字母或数字或下划线
\s
匹配任意的空白符
\d
匹配数字
\b
匹配单词的开始或结束
^
匹配字符串的开始
$
匹配字符串的结束
[x]
匹配x字符,如匹配字符串中的 a、b 和 c 字符
\W
\w的反义,即匹配任意非字母,数字,下划线和汉字的字符
\S
\s的反义,即匹配任意非空白符的字符
\D
\d的反义,即匹配任意非数字的字符
\B
\b的反义,即不是单词开头或结束的位置
[^x]
匹配除了 x 以外的任意字符,如 [^abc] 匹配除了 abc 这几个字母之外的任意字符
重复*
重复零次或更多次
+
重复 1 次或更多次
?
重复零次或 1 次
{n}
重复 n 次
{n,}
重复 n 次或更多次
{n,m}
重复 n 到 m 次
模式修正符i
模式中的字符将同时匹配大小写字母m
字符串视为多行s
将字符串视为单行,换行符作为普通字符x
将模式中的空白忽略e
preg_replace() 函数在替换字符串中对逆向引用作正常的替换,将其作为 PHP 代码求值,并用其结果来替换所搜索的字符串。A
强制仅从目标字符串的开头开始匹配D
模式中的 $ 元字符仅匹配目标字符串的结尾U
匹配最近的字符串u
模式字符串被当成 UTF-8
PHP正则函数
在 PHP 应用中,正则表达式主要用于:
- 正则匹配:根据正则表达式匹配相应的内容 2. 正则替换:根据正则表达式匹配内容并替换 3. 正则分割:根据正则表达式分割字符串
PHP 正则表达式匹配 preg_match
与 preg_match_all
函数preg_match()
preg_match()
函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。
语法:
int preg_match( string pattern, string subject [, array matches ] )
参数说明:
pattern 正则表达式 subject
需要匹配检索的对象 matches
可选,存储匹配结果的数组, $matches[0]
将包含与整个模式匹配的文本,$matches[1]
将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推
preg_match_all()
preg_match_all()
函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。
语法:
int preg_match_all( string pattern, string subject, array matches [, int flags ] )
参数说明:pattern
: 正则表达式subject
: 需要匹配检索的对象matches
: 存储匹配结果的数组flags
: 可选,指定匹配结果放入 matches
中的顺序,可供选择的标记有:
PREG_PATTERN_ORDER
:默认,对结果排序使$matches[0]
为全部模式匹配的数组,$matches[1]
为第一个括号中的子模式所匹配的字符串组成的数组,以此类推PREG_SET_ORDER
:对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推 3.PREG_OFFSET_CAPTURE
:如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量
部分实例
//1,过滤所有html标签的正则表达式: </?[^>]+>
//2,过滤所有html标签的属性的正则表达式: $html = preg_replace(“/<([a-zA-Z]+)[^>]*>/”,“<\\1>“,$html);
//3,过滤部分html标签的正则表达式的排除式(比如排除
,即不过滤
): </?[^pP/>]+>