太原PHP培训
达内太原php培训中心

0351-5608878

热门课程

最通俗易懂的php正则表达式教程(四)

  • 时间:2016-10-18
  • 发布:资源共享
  • 来源:资源共享

最通俗易懂的php正则表达式教程(四)

接着昨天的内容,今天太原php培训班依旧为大家带来php相关的正则表达式相关内容。

正则表达式的替换

1ereg_replace()eregi_replace()

函数原形:

string ereg_replace (string $pattern,string $replacement,string $string)

String eregi_replace(string $pattern,string $replacerment,string $string)

Ereg_replace()$string中搜索模式字符串$pattern,并将所匹配结果替换为$sreplacement

$pattern中包含模式单元(或子模式)时,$replacement中形如“\1”“$1”的位置将依次被这些子模式所匹配的内容替换。而“\0”“$0”是只整个的匹配字符串的内容。需要注意的是,在双引号中反斜线作为转义符使用,所以必须使用“\\0”\\1的形式。

Eregi_replace()ereg_replace()的功能一致,只是前者忽略大小写

$lines = file('source.php'); //将文件读入数组中

for($i=0; $i

{

//将行末以“\\”“#”开头的注释去掉

$lines[$i] = eregi_replace("(\/\/|#).*$", "", $lines[$i]);

//将行末的空白消除

$lines[$i] = eregi_replace("[ \n\r\t\v\f]*$", "\r\n", $lines[$i]);

}

//整理后输出到页面

echo htmlspecialchars(join("",$lines));

?>

2preg_replace()

函数原形:

mixed preg_replace(mixed $patten,mixed $replacement,mixed $subject[,int $limit])

Preg_replaceereg_replace的功能更加强大,其前三个参数均可以使用数组;第四个参数$limit可以设置替换的次数,默认为全部替换。

//字符串

$string = "Name: {Name}

\nEmail: {Email}

\nAddress: {Address}

\n";

//模式

$patterns =array(

"/{Address}/",

"/{Name}/",

"/{Email}/"

);

//替换字串

$replacements = array (

"No.5, Wilson St., New York, U.S.A",

"Thomas Ching",

"tom@emailaddress.com",

);

//输出模式替换结果

print preg_replace($patterns, $replacements, $string);

?>

正则表达式的拆分

1split()spliti()

函数原型:

array split (string $pattern,string $string[,int $limit])

本函数返回一个字符串数组,每个单元为$string经正则表达式$pattern作为边界分割出的子串。如果设定了$limit,则返回的数组最多包含$limit个单元。而其中最后一个单元包含了$string中剩余的所有部分。Splitisplit的忽略大小版本。

$date = "08/30/2006";

//分隔符可以是斜线,点,或横线

list($month, $day, $year) = split ('[/.-]', $date);

//输出为另一种时间格式

echo "Month: $month; Day: $day; Year: $year

\n";

?>

2preg_split()

本函数与split函数功能一致。

$seek = array();

$text = "I have a dream that one day I can make it. So just do it, nothing is impossible!";

//将字符串按空白,标点符号拆分(每个标点后也可能跟有空格)

$words = preg_split("/[.,;!\s']\s*/", $text);

foreach($words as $val)

{

$seek[strtolower($val)] ++;

}

echo "共有大约" .count($words). "个单词。";

echo "其中共有" .$seek['i']. "个单词“I”";

?>

正则表达式的Wed验证应用

电子邮件地址的校验

/* 校验邮件地址 */

function checkMail($email)

{

//用户名,由“\w”格式字符、“-”“.”组成

$email_name = "\w|(\w[-.\w]*\w)";

//域名中的第一段,规则和用户名类似,不包括点号“.”

$code_at = "@";

$per_domain = "\w|(\w[-\w]*\w)";

//域名中间的部分,至多两段

$mid_domain = "(\." .$per_domain. "){0,2}";

//域名的最后一段,只能为“.com”“.org”“.net”

$end_domain = "(\.(com|net|org))";

$rs = preg_match(

"/^{$email_name}@{$per_domain}{$mid_domain}{$end_domain}$/",

$email

);

return (bool)$rs;

}

//测试,下面均返回成功

var_dump( checkMail("root@localhost") );

var_dump( checkMail("Frank.Roulan@esun.edu.org") );

var_dump( checkMail("Tom.024-1234@x-power_1980.mail-address.com") );

?>

URL地址的校验

/* 校验URL地址 */

function checkDomain($domain)

{

return ereg("^(http|ftp)s? ://(www\.)?.+(com|net|org)$", $domain);

}

$rs = checkDomain ("www.taodoor.com"); //返回假

$rs = checkDomain ("http://www.taodoor.com"); //返回真

?>

电话号码

/* 校验电话号码 */

function checkTelno($tel)

{

//去掉多余的分隔符

$tel = ereg_replace("[\(\)\. -]", "", $tel);

//仅包含数字,至少应为一个6位的电话号(即没有区号)

if(ereg("^\d+$", $tel))

{

return true;

}else{

return false;

}

}

$rs = checkTelno("(086)-0411-12345678"); //返回真

?>

邮政编码的校验

/* 校验邮政编码 */

function checkZipcode($code)

{

//去掉多余的分隔符

$code = preg_replace("/[\. -]/", "", $code);

//包含一个6位的邮政编码

if(preg_match("/^\d{6}$/", $code))

{

return true;

}else{

return false;

}

}

$rs = checkZipCode("123456"); //返回真

?>

至此,最通俗易懂的php正则表达式教程结束!

好了,今天就给大家讲这么多吧,喜欢我的内容可以关注或者分享(微信公众平台:tytedu)选择太原达内培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!

上一篇:最通俗易懂的php正则表达式教程(三)
下一篇:开源 php 小框架

太原php培训资源站

太原PHP编程开发并发编程槽与坑

Php开发规划自己的路

太原php培训老生常谈php

选择城市和中心
贵州省

广西省

海南省