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

前端之家收集整理的这篇文章主要介绍了正则表达式函数实例详解(及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/",$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,-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,$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\*

猜你在找的正则表达式相关文章