正则表达式函数实例详解(及PHP字符串处理函数)

本文将介绍Perl正则表达式常用的函数,介绍函数常用的语法实例。

首先来看,对文本的处理方式:匹配,查找,分隔,替换。字符串函数和正则表达式,都可以处理,那他们分别有什么区别哪?
1、主要区别在于,字符串处理函数,只可准对性的处理,而正则表达式则可以处理一个模式
2、字符串处理函数,处理快,但是不一定能实现想要的功能。
3、正则表达式函数,功能强大,但是效率较低。
注意:如果字符串处理函数 和 正则 都可以实现需求功能,优先选取字符串处理函数。
下面我们将分别介绍字符串的 匹配、查找、分隔、替换函数。

匹配查找

字符串匹配函数

strstr,strpos,substr等

正则匹配

preg_match,prge_match_all,preg_grep

preg_match,preg_match_all,preg_grep

preg_match("/reg/",string,$arr);//reg:正则表达式;string:字符串;$arr:匹配结果(匹配详情)

preg_match_all("/reg/",string,$arr);//规则同上,但是此函数可以返回所有匹配结果,preg_match 匹配的是第一处

preg_gerp("/reg/",$array);//reg:正则, $array:字符串数组
例如:
    $arr  = array("abcd1","hello2","world","nihao")
    $content = preg_grep("/\d/",$arr);
    // preg_prep 可以匹配字符串数组

分隔

同样的道理,字符串分隔只能按固定的值分隔,而正则分隔则可以按照一种模式进行分隔。

explode(separator,$str,num);//separator 分隔符,要分割的字符串,返回数组元素的数目
// 若未找到,则不分割

实例:

<?php
    $str = "php";
    $reg = "//";
    $arr =  preg_split($reg,$str,-1,PREG_SPLIT_NO_EMPTY);//-1表示不限制个数,后面参数表示去除空。
    $result = implode("-",$str);// 将数组中的每一项拼接,结果为: l-a-m-p

    list$a,$b)= explode("-","soufun_ask");//字符串分隔,分别放到list中
    echo $a;//soufun
    echo $b;//ask

替换

字符串:

str_replace(mix $search,mix $replace,mix $subject,[int &count])
// search : 搜索的内容,可为数组["正常""PHP","微信"];
// replace: 要替换的内容["不正常""JAVA","QQ"];可以针对性的替换,不正常代替正常,JAVA 代替PHP,QQ代替微信。
//subject :源内容,源字符串
//count :替换的次数

正则表达式:

实例① 以下是一个实例,将链接进行替换成a标签

<?php
    $str = "百度的连接是http://www.baidu.com,CSDN的连接是http://www.csdn.net,搜房问答的连接是http://www.fang.com/ask";
    $reg = "/http:\/\/(www)\.(.*?)\.(com|net)(\/.*)?/";
    if (preg_match_all($reg,$str,$arr)){
        echo "匹配成功</br>";
        echo "<pre>";
        var_dump($arr);
        echo "</pre>";
    }
    $newStr = preg_replace($reg,"<a href='$0'>\\1.\\2.\\3\\4</a>",$str);
    echo "</br>{$newStr}";

实例②:代码与以上一样,讲讲模式修正符 e

$newStr = preg_replace($reg,"<a href='$0'>"."strtoUpper(\\1.\\2.\\3\\4)."</a>",$str);
//比如我想讲替换的链接转成 大写 之后显示
//此时若想 执行替换字符中的函数,就需要在 正则之后加上模式修正符 e
$reg = "/http:\/\(www)\.(.*?)\.(com|net|cn)/e";//便可匹配之后执行函数

其他替换函数

preg_replace_callback($reg,"myfun",$text);//myfun: 回调函数,执行完匹配之后调用回调方法。

preg_quote();// 转义特殊字符:$reg = "/".preg_quote("*is*")."/";// 转义之后: \*is\*
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值