PHP中的preg_match()、preg_match_all()

zxh5566  2016-08-08 06:51   Hits: 

1、preg_match()

该函数通常用于表单验证,可以按指定的正则表达式模式,对字符串进行搜索和匹配一次,该函数有两个必选项,第一个参数pattern需要提供用户按正则表达式语法编写的模式,第二个参数subject需要一个字符串,该函数的作用就是在第二个字符串参数中,搜索与第一个参数给出的正则表达式匹配的内容。如果提供了第三个可选参数matches,则可以用于保存与第一个参数中的子模式的各个部分匹配的结果,正则表达式中的子模式是使用()括起来的模式单元,其中数组总的第一个元素matches[0]保存了与正则表达式pattern匹配的整体内容,而数组matches中的其他元素,则按顺序依次保存了与正则表达式小括号内子表达式相匹配的内容,例如matches[1]保存了与正则表达式中第一个小括号内匹配的内容,matches[2]保存了与正则表达式中第二个小括号内匹配的内容,依次类推,该函数只做一次匹配,最终返回0或1的匹配结果。

<?php
$pattern = "/(https?|ftp?):\/\/(www)\.([^\.\/]+)\.(com|net|org)(\/[\w-\.\/\?\%\&\=]*)?/i";
$subject = "网址为http://www.txxwl.com/index.php的位置是ZXH5566";
if(preg_match($pattern,$subject,$matches)){
echo "搜索到的url".$matches[0]."<br>";
echo "搜索到的url中的协议".$matches[1]."<br>";
echo "搜索到的url中的主机".$matches[2]."<br>";
echo "搜索到的url中的域名".$matches[3]."<br>";
echo "搜索到的url中的顶域".$matches[4]."<br>";
echo "搜索到的url中的文件".$matches[5]."<br>";
}
?>
在上例子中,通过preg_match()函数,根据定义的url,正则表达式在指定的字符中搜索到了第一个url,不仅获取到了一个整体的url,还通过正则表达式中的子模式获取到了url中的每个部分

2、preg_match_all()

函数与preg_match()函数类似,不同的是函数preg_match()在第一次匹配之后就会停止搜索,而preg_match_all()则会一直搜索到指定字符串的结尾,可以获取到所有匹配的结果,该函数将把所有可能的匹配结果放入第三个参数,并返回整个模式匹配的次数,如果出错则返回false,如果使用了第四个参数,会根据它指定的顺序将每次出现的匹配结果保存到第三个参数的数组中,第四个参数flags有以下两个预定义的值。
PREG_PATTERN_ORDER,它是默认值,对结果排序使用$matches[0]为全部模式匹配的数组,$matches[1]为第一个括号中的子模式所匹配的字符串组成的数组,以此类推
PREG_SET_ORDER,对结果排序使用$matches[0]为第一组匹配项的数组,$matches[1]为第二组匹配项的数组
<?php
$pattern = "/(https?|ftp?):\/\/(www)\.([^\.\/]+)\.(com|net|org)(\/[\w-\.\/\?\%\&\=]*)?/i";
$subject = "网址为http://www.txxwl.com/index.php的位置是ZXH5566,
网址为http://www.baidu.com/index.php,
网址为http://www.google.com/index.php
";
if(preg_match_all($pattern,$subject,$matches,PREG_SET_ORDER)){
foreach($matches as $rules){
echo "搜索到的".$i."url".$rules[0]."<br>";
echo "搜索到的".$i."url中的协议".$rules[1]."<br>";
echo "搜索到的".$i."url中的主机".$rules[2]."<br>";
echo "搜索到的".$i."url中的域名".$rules[3]."<br>";
echo "搜索到的".$i."url中的顶域".$rules[4]."<br>";
echo "搜索到的".$i."url中的文件".$rules[5]."<br>";
}
}

上一篇:PHP字符串比较函数 strcmp()、strcasecmp()、strnatcmp(
下一篇:PHP字符串处理函数strstr()、strpos()、strrpos()、sub