正则表达式函数
1.preg_match()函数,实现字符串的比对
int preg_match(string pattern, string subject, array [matches]);
返回值: 整数/数组
本函数以 pattern 的规则来解析比对字符串 subject。比对结果返回的值放在数组参数 matches 之中,matches[0] 内容就是原字符串 subject、matches[1] 为第一个合乎规则的字符串、matches[2] 就是第二个合乎规则的字符串,余类推。若省略参数 matches,则只是单纯地比对,找到则返回值为 true。
e.x :
<?php
preg_match ( "/^(http:)?([^//]+)/i", "http://www.php.net/index.html" , $matches ); // 从 URL 中取得主机名
$host = $matches[2];
echo $host."<br>";
preg_match ( "/[^/.//]+[/.][^/.//]+$/" , $host , $matches ); // 从主机名中取得后面两段
$domain = $matches[0];
echo "domain name is: $domain";
?>
运行结果:
www.php.net
domain name is: php.net
2.preg_replace()实现正则表达式的替换.注意本函数区分字母大小。写语法如下:
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) //在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。
e.x :
<?php
$pattern = array("/姓名/","/姓别/","/年龄/");
$replacement = array("肖红阳","男","20");
$subject = "姓名 姓别 年龄";
$limit = 8;
echo "替换之前:".$subject."<br>";
echo "<br>替换输出:".preg_replace($pattern,$replacement,$subject,$limit);
?>
运行结果:
替换之前:姓名 姓别 年龄
替换输出:肖红阳 男 20
e.x 实现preg_replace中的replacement经过运算后再替换工能,是在正则表达式中加入e模式修正符
<?php
$mode = "/(a)/ie";
$replace = "md5(//1)"; //由于上行中加入了模式修正符"e"所以这里正则引用//1会经过md5()运算后再返回结果
$subject = "12<font color=red >a</font>z4<font color=red >A</font>324b1423c";
$limit = 1;
echo preg_replace($mode,$replace,$subject,$limit); //$limit为限制替换的次数
?>
运行结果:
120cc175b9c0f1b6a831c399e269772661z4A324b1423c
3.split使用正则表达式将字符串分割到数组中,本函数返回一个字符串数组,失败则返回false.语法如下:
array split(string pattern,string string[,int limit]) //pattern为正则表达式,string 为要被分割的字符串,limit为分割以后得到的数组的元素个数
e.x
<?php
$pattern = "/.|@";
$string = "http://www.xiaohongyang.@yahoo.com";
$arr = split($pattern,$string);
while(list($key,$value)=each($arr)){
echo $value."<br>";
}
?>
运行结果:
http:
www.xiaohongyang.
yahoo.com