php限定符实例,PHP正则表达式限定符说明

+   前导字符必须在目标对象中连续出现1次或1次以上

*   前导字符必须在目标对象中连续出现0次或0次以上

?   前导字符必须在目标对象中连续出现0次或1次

.   匹配换行符之外的所有字符

\s  匹配单个空格符,包括tab和换行符

\S   与\s相反

\d   匹配0-9的数字

\D   与\d相反

\w   匹配字母、数字、下划线

\W   与\w相反

[^]  在括号中表示否定

|   表示“或”

()   表达式分组

[x-y] x到y的范围区间

ereg

(PHP 3, PHP 4, PHP 5)

ereg -- 正则表达式匹配

说明

bool ereg ( string pattern, string string [, array regs]

)

注: 使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg()

更快的替代方案。

以区分大小写的方式在 string 中寻找与给定的正则表达式 pattern

所匹配的子串。

如果找到与 pattern

中圆括号内的子模式相匹配的子串并且函数调用给出了第三个参数

regs,则匹配项将被存入 regs 数组中。$regs[1]

包含第一个左圆括号开始的子串,$regs[2]

包含第二个子串,以此类推。$regs[0] 包含整个匹配的字符串。

注: 直到 PHP 4.1.0 为止,$regs

将被填充为正好十个单元,即使实际匹配的子串少于十个。这并不影响

ereg() 匹配更多子串的能力。如果没有找到匹配,则 $regs 不会被 ereg()

更改。

如果在 string 中找到 pattern 模式的匹配则返回

TRUE,如果没有找到匹配或出错则返回 FALSE。

if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs))

{

echo

"$regs[3].$regs[2].$regs[1]";

} else {

echo "Invalid date format:

$date";

}

?>

ereg_replace

(PHP 3, PHP 4, PHP 5)

ereg_replace -- 替换正则表达式

说明

string ereg_replace ( string pattern, string replacement, string

string )

本函数在 string 中扫描与 pattern 匹配的部分,并将其替换为

replacement。

返回替换后的字符串。(如果没有可供替换的匹配项则会返回原字符串。)

如果 pattern 包含有括号内的子串,则 replacement 可以包含形如

\\digit

的子串,这些子串将被替换为数字表示的的第几个括号内的子串;\\0

则包含了字符串的整个内容。最多可以用九个子串。括号可以嵌套,此情形下以左圆括号来计算顺序。

如果未在 string 中找到匹配项,则 string 将原样返回。

$string = "This is a test";

echo str_replace(" is", " was", $string);

echo ereg_replace("( )is", "\\1was",

$string);

echo ereg_replace("(( )is)", "\\2was",

$string);

?>

preg_match

(PHP 3 >= 3.0.9, PHP 4, PHP 5)

preg_match -- 进行正则表达式匹配

说明

int preg_match ( string pattern, string subject [, array matches [,

int flags]] )

在 subject 字符串中搜索与 pattern

给出的正则表达式相匹配的内容。

如果提供了 matches,则其会被搜索的结果所填充。$matches[0]

将包含与整个模式匹配的文本,$matches[1]

将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。

flags 可以是下列标记:

PREG_OFFSET_CAPTURE

如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其偏移量。本标记自

PHP 4.3.0 起可用。

flags 参数自 PHP 4.3.0 起可用。

preg_match() 返回 pattern 所匹配的次数。要么是 0

次(没有匹配)或 1 次,因为 preg_match()

在第一次匹配之后将停止搜索。preg_match_all() 则相反,会一直搜索到

subject 的结尾处。如果出错 preg_match() 返回 FALSE。

/* 模式中的 \b 表示单词的边界,因此只有独立的 "web"

单词会被匹配,

* 而不会匹配例如 "webbing" 或 "cobweb" 中的一部分

*/

if (preg_match ("/\bweb\b/i", "PHP is the web scripting language of

choice.")) {

print "A match was

found.";

} else {

print "A match was not

found.";

}

if (preg_match ("/\bweb\b/i", "PHP is the website scripting

language of choice.")) {

print "A match was

found.";

} else {

print "A match was not

found.";

}

?>

preg_match_all

(PHP 3 >= 3.0.9, PHP 4, PHP 5)

preg_match_all -- 进行全局正则表达式匹配

说明

int preg_match_all ( string pattern, string subject, array matches

[, int flags] )

在 subject 中搜索所有与 pattern

给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches

中。

搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。

flags 可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和

PREG_SET_ORDER 合起来用没有意义):

PREG_PATTERN_ORDER

对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1]

为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。

PREG_SET_ORDER

对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1]

为第二组匹配项的数组,以此类推。

PREG_OFFSET_CAPTURE

如果设定本标记,对每个出现的匹配结果也同时返回其附属的字符串偏移量。注意这改变了返回的数组的值,使其中的每个单元也是一个数组,其中第一项为匹配字符串,第二项为其在

subject 中的偏移量。本标记自 PHP 4.3.0 起可用。

// \\2 是一个逆向引用的例子,其在 PCRE

中的含义是

// 必须匹配正则表达式本身中第二组括号内的内容,本例中

// 就是 ([\w]+)。因为字符串在双引号中,所以需要

// 多加一个反斜线。

$html = "bold textclick

me";

preg_match_all

("/(]*>)(.*)()/", $html,

$matches);

for ($i=0; $i< count($matches[0]); $i++) {

echo "matched: ".$matches[0][$i]."\n";

echo "part 1: ".$matches[1][$i]."\n";

echo "part 2: ".$matches[3][$i]."\n";

echo "part 3: ".$matches[4][$i]."\n\n";

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值