课程咨询 :13623629309

太原PHP培训 > 达内新闻 > 最通俗易懂的php正则表达式教程(四)
  • 最通俗易懂的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高级开发名企定制班(剩2个名额)

php高级开发名企定制班(剩2个名额)

开班日期:12-29

php高级开发周末班(剩5个名额)

php高级开发周末班(剩5个名额)

开班日期:12-29

php高级开发免费试听(剩5个名额)

php高级开发免费试听(剩5个名额)

开班日期:12-29

更多高级开发工程师精品班

更多高级开发工程师精品班

开班日期:12-29

  • 地址:山西省太原市小店区学府街长治路高新国际A座24层
  • 课程培训电话:13623629309     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56