资讯专栏INFORMATION COLUMN

正则表达式函数与字符串处理函数

bovenson / 786人阅读

摘要:资源收录正则函数注不同于字符串函数,为主动传值,指示替换次数汇集全网优质网址及资源的中文上网导航。要注意替换顺序,如果先将网址替换为标签,再去除所有标签,会将链接也去除其他正则函数带回调函数汇集全网优质网址导航。

1.字符串匹配与查找

a.如果可以使用字符串处理函数处理的,不要使用正则表达式(功能强,效率低)
b.使用正则表达式匹配函数:

    (1)preg_match:匹配用户名/email/url
";
        }
        if(!preg_match("/w+([+-.]w+)*@w+([-.]w+)*.w+([-.]w+)*/i",$_POST["email"])){
            echo "不是正确的email格式
"; } if(!preg_match("/(https?|fps?)://(www|mail|bbs|fps).(.*?).(net|com|org|cn)([w+./=?&\%]*)?/",$_POST["url"],$arr)){ echo "不是正确的url格式
"; }else{ echo "
";
            print_r($arr);
            echo "
"; /* Array ( [0] => https://www.baidu.com/ [1] => https [2] => www [3] => baidu [4] => com [5] => / )*/ } } ?>
    (2)preg_match_all:以匹配url为例展示,可以匹配全部url,返回多维数组(视子模式而定),可以传入第四个参数,以改变多维数组的构成模式
    
";
    }else{
        echo "
";
        print_r($arr);
        echo "
"; /* Array ( [0] => Array ( [0] => http://www.liuxue86.com/a/3101593.html [1] => https://www.segmentfault.com/write?draftId=1220000010640798 ) [1] => Array ( [0] => http [1] => https ) [2] => Array ( [0] => www [1] => www ) [3] => Array ( [0] => liuxue86 [1] => segmentfault ) [4] => Array ( [0] => com [1] => com ) [5] => Array ( [0] => /a/3101593.html [1] => /write?draftId=1220000010640798 ) )*/ } ?>
    (3)preg_grep:对多个字符串的数组进行匹配,如下:
 1111111111 [3] => 2222222222 )
?>
c.使用字符串匹配函数:strstr/strpos/substr
    function getFileName($url){
        $str=strrpos($url,"/")+1;
        return substr($url,$str);
    }
    echo getFileName("https://segmentfault.com/write?draftId=1220000010640798/aaa.php");

2.字符串的分割与连接

a.使用字符串函数:explode/implode/join
b.使用正则函数:preg_split ( $pattern , $subject [,$limit = -1 [,$flags = 0 ]] ),其中limit为分割的总个数(即数组长度),-1表示不限制个数,flags为可选系统参数

注:字符偏移量为该字符相对于首字符的位置

 aaaaaa [1] => bbbbb. ccccccc )
?>

3.字符串的替换

a.字符串函数:str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ),&$count返回替换次数,由于混合类型,因此可以以数组替换数组,如下:

";
    echo $count;
?>

b.正则函数:mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

*注1*:&$count不同于字符串函数,为主动传值,指示替换次数
网址及资

的中文上网导航。及时收录影视、音乐、小说、游戏等分类的网址和内容,让您的网络生活更简单精彩。"; $result=preg_replace("/<[/!]*?[^<>]*?>/is","",$str,1);//替换HTML标签,只替换了一次 echo $result."
"; ?>
*注2*:替换项$replacement可以使用12等借用正则中子模式的内容,如下:
",$str);
    echo $result."
"; ?>
*注3*:该函数也可以处理三个参数全是数组的情况,如下:
网址http://www.baidu.com及资2源的https://www.segmentfault.com/write?freshman=1中文

网33导航。", "汇集全网1优质址http://www.baidu.com及资2源的https://www.segmentfault.com/write?freshman=1中文

网33导航。", "汇集全网1优质址http://www.baidu.com及资2源的https://www.segmentfault.com/write?freshman=1中文

网33导航。"); //要注意替换顺序,如果先将网址替换为a标签,再去除所有HTML标签,会将链接也去除 $arr=array("/(https?|fps?)://(www|mail|bbs|fps).(.*?).(net|com|org|cn)([w+./=?&\%]*)?/","/<[/!]*?[^<>]*?>/is","/d/"); $replacement=array(""," ","@"); $result=preg_replace($arr,$replacement,$str); echo "
";
    print_r($result)."
"; echo "
"; ?>

4.其他正则PCRE函数

a.preg_replace_callback:带回调函数

  mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )
    $str="汇集全网2014优质1网2址3导2015航。";
    function num($num){//传入参数为匹配到的子模式数组
        return $num[1]+1;
    }
    $result=preg_replace_callback("/(d{4})/","num",$str);
    echo $result;

b.preg_quote:将正则语法中应该转义的符号加上转义符

  string preg_quote ( string $str [, string $delimiter = NULL ] ) 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25672.html

相关文章

  • PHP基础系列之正则达式(一)

    摘要:正则表达式作为一个匹配的模板,是由定界符,原子普通字符,例如有特殊功能的字符称为元字符,例如等以及模式修正符等部分组成的文字模式。正则表达式中可以使用编码。限定符限定符用来指定正则表达式的一个给定原子必须要出现多少次才能满足匹配。 正则表达式的定义 正则表达式就是描述字符排列模式的一种自定义的语法规则。由于正则表达式本身具有一套非常完整的、可以编写模式的语法体系,提供了一种灵活且直观的...

    Anchorer 评论0 收藏0
  • 正则达式入门实践(一)

    摘要:一前言正则表达式入门实践系列文章适合熟悉至少使用过正则表达式的同学,在文章开始的时候我们都会带着问题去思考如何正确应用正则表达式解决出现的问题,在解决问题的过程中增长你的知识,提高你的实践能力。 一 前言 正则表达式入门实践系列文章适合熟悉至少使用过正则表达式的同学,在文章开始的时候我们都会带着问题去思考如何正确应用正则表达式解决出现的问题,在解决问题的过程中增长你的知识,提高你的实践...

    chanthuang 评论0 收藏0
  • 《高性能javascript》阅读摘要

    摘要:当执行上下文被创建时,它的作用域链初始化为当前运行函数的属性中的对象。该过程搜索执行环境的作用域链,查找同名的标识符。搜索实例成员比从字面量或局部变量中读取数据代价更高,再加上遍历原型链带来的开销,这让性能问题更为严重。 最近在阅读这本Nicholas C.Zakas(javascript高级程序设计作者)写的最佳实践、性能优化类的书。记录下主要知识。 加载和执行 脚本位置 放在中的...

    duan199226 评论0 收藏0
  • 《高性能javascript》阅读摘要

    摘要:当执行上下文被创建时,它的作用域链初始化为当前运行函数的属性中的对象。该过程搜索执行环境的作用域链,查找同名的标识符。搜索实例成员比从字面量或局部变量中读取数据代价更高,再加上遍历原型链带来的开销,这让性能问题更为严重。 最近在阅读这本Nicholas C.Zakas(javascript高级程序设计作者)写的最佳实践、性能优化类的书。记录下主要知识。 加载和执行 脚本位置 放在中的...

    afishhhhh 评论0 收藏0
  • JavaScript正则达式总结

    摘要:正则表达式一直是里比较难以掌握的点。在中创建正则的两种方式使用字面量这就是正则表达式的字面量语法,表示正则表达式的模式,为正则表达式的标志。字面量形式的正则表达式一般使用较多,也推荐大家尽可能使用这种形式,简洁易读,符合正常的使用习惯。 正则表达式一直是js里比较难以掌握的点。 看不懂,学不会,记不住。 每次需要用到正则的时候,都需要再去查找资料。 今天花时间把正则的知识点总结下,希望...

    big_cat 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<