PHP的preg_match函数用法及例子
PHP的preg_match函数是一种正则表达式函数,用于在字符串中搜索模式,并可以将匹配的结果存放到数组中。常用于搜索某个字符串或者模板中特定的内容,实现数据处理和文本替换的功能。下面将介绍preg_match函数的用法及其例子。
语法:
int preg_match(string $pattern, string $subject [, array &$matches [, int $flags=0 [, int $offset=0 ]]])
说明:
$pattern:待匹配的正则表达式模式
$subject:要搜索的字符串
$matches:可选参数,储存搜索结果
$flags:可选参数,设置搜索标志
$offset:可选参数,开始搜索的起始位置
返回值:
成功时返回1,否则返回0或者错误代码。如果设置了$matches参数,则返回的结果将存储在(matches)数组中。
下面简单介绍preg_match函数的参数:
$pattern
该参数是用来定义正则表达式,表示要搜索的字符串模式。在正则表达式中,“.”可以匹配任何字符,“\d”表示数字,“\w”表示字母、数字或下划线,“\s”表示空白字符。正则表达式后面常跟“+”或“*”表示匹配的字符串一次或多次或零次。
$subject
该参数是要搜索的字符串,可以是任意形式,包括网页HTML代码、纯文本数据或其他格式的信息。
$matches
该参数是可选的数组变量,在搜索过程中会将所有匹配到的字符串存入到先前声明的数组中。如:
preg_match('/(\d+)-(\d+)-(\d+)/','2019-06-22',$matches);
print_r($matches);
则结果为:
Array
(
[0] => 2019-06-22
[1] => 2019
[2] => 06
[3] => 22
)
$flags
该参数表示搜索的标志位,常用的标志有两个:
i:表示不区分大小写
s:表示允许点(.)匹配任意字符
$offset
该参数表示从哪个位置开始搜索,默认为0。如果从第n个字符开始匹配,则可以设置为$offset=n。
下面给出两个preg_match函数的例子:
例子一:
判断一段字符串是否包含特定的字符或字符串,如果包含则进行处理,否则不做处理。
示例代码:
//判断字符串中是否包含JavaScript或C#语言
$str = "PHP is the best programming language. JavaScript is also great.";
if(preg_match('/javascript|c#/i',$str)){
//如果包含,则输出相应的提示信息
echo "This string includes JavaScript or C# language.";
}else{
//否则输出未找到信息
echo "Sorry, we can not find JavaScript or C# language.";
}
实际输出:
This string includes JavaScript or C# language.
例子二:
将字符串中的电话号码取出来,存储到$matches数组中,并输出数组内容。
示例代码:
$str = "This is my phone number: 13888888888.";
preg_match('/1\d{10}/',$str,$matches);
print_r($matches);
实际输出:
Array
(
[0] => 13888888888
)
以上两个例子均使用preg_match函数,对于字符串中的特定模式进行匹配,找到目标后进行相应的操作,实现数据处理的功能。由于preg_match函数功能强大,只要用好正则表达式,应用场景非常广泛。
