加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 00:43:07 所属栏目:百科 来源:网络整理
导读:本文将介绍Perl正则表达式常用的函数,介绍函数常用的语法实例。 首先来看, 对文本的处理方式 :匹配,查找,分隔,替换。字符串函数和正则表达式,都可以处理,那他们分别有什么区别哪? 1、主要区别在于, 字符串处理函数,只可准对性的处理,而正则表达

本文将介绍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.34</a>",$str);
    echo "</br>{$newStr}";

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

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

其他替换函数

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

preg_quote();// 转义特殊字符:$reg = "/".preg_quote("*is*")."/";// 转义之后: *is*

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读