我们来看下PHP进行正则匹配的一个简单例子:
可以通过PHP的内置web服务器来查看运行结果,不出意外的话你可以看到如下输出,
<!-- lang: php -->
Array
(
[0] => Array
(
[0] => c3de
[1] => 2
)
)
接下来我们来仔细分析这个代码。
preg_match函数
preg_match函数的原型是int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
。其中pattern
即为正则表达式,subject
是被匹配的字符串,后面的都是可选参数。代码中的PREG_OFFSET_CAPTURE
即为flags值,作用就是将匹配结果的偏移量同匹配结果一起输出至matches
变量中,默认只将匹配结果输出至matches
中。关于该函数的详细说明,请参看preg_match官方文档。
正则表达式
代码中的‘/c\def/’
即为正则表达式,在大多数程序中,正则表达式都被置于两个正斜杠之间。\d
表示匹配数字,因此代码中的正则表达式匹配的是c数字def
的字符串。关于正则表达式的更多语法,可以参看正则表达式30分钟入门教程。这里顺便提一点,正则表达式的第二个斜杠之后可以添加一个模式修饰符。最简单的模式修饰符就是i
,匹配时忽略大小写。例如,正则表达式/def/
匹配字符串abcDef
会失败,而/def/i
匹配字符串abcDef
则会成功。更多的模式修饰符可参看模式修饰符。
print_r函数
print_r函数打印一个变量易于理解的信息。不同于print和echo只能打印字符串、整型等普通变量,print_r还可以打印array变量以及object变量,并以易于理解的格式输出。讲到这再延伸讲下,PHP中还有一个经常会用到的打印信息的函数,就是var_dump
函数。正如函数的名称一样,这个函数经常在调试下使用,除了能打印变量的值,还能打印变量的类型。stackoverflow上有个问题很好,大家可以参看下:echo,print,print_r,var_dump的不同。