二:字符串和正则表达式_正则表达式函数

正则表达式函数

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 = "姓名&nbsp;&nbsp;姓别&nbsp;&nbsp;&nbsp;年龄";
$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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值