<dl id="q0jn1"><ins id="q0jn1"></ins></dl>
  • <dl id="q0jn1"><font id="q0jn1"><nobr id="q0jn1"></nobr></font></dl>

    <dl id="q0jn1"></dl>

  • <dl id="q0jn1"><ins id="q0jn1"><nobr id="q0jn1"></nobr></ins></dl><output id="q0jn1"><ins id="q0jn1"></ins></output><dl id="q0jn1"><font id="q0jn1"></font></dl>
    <output id="q0jn1"></output>
    <dl id="q0jn1"></dl>
    <dl id="q0jn1"><font id="q0jn1"></font></dl>
    1. <output id="q0jn1"><ins id="q0jn1"></ins></output>
      <dl id="q0jn1"><ins id="q0jn1"></ins></dl>

    2. <dl id="q0jn1"></dl>

            1. <dl id="q0jn1"></dl>
              1. 国联商务网 -全面的电子商务资源网O2O本地生活网£¡

                TOW国联商务网

                当前位置: 主页 > 新闻资讯 > 技术知识 >

                PHP正则表达式的几则使用技巧

                时间:2019-02-27 15:15来源: 作者:like 点击:
                PHP正则表达式主要用于字符串的模式分割¡¢匹配¡¢查找及替换操作¡£使用正则表达式在某些简单的环境下可能效率不高£¬因此如何更好的使用PHP正则表达式需要综合考虑¡£ 我的PHP正则入门£¬是起源于网上的一篇文章£¬这篇文章由浅入深的阐述了PHP正则表达式使用的方

                 

                PHP正则表达式主要用于字符串的模式分割¡¢匹配¡¢查找及替换操作¡£使用正则表达式在某些简单的环境下可能效率不高£¬因此如何更好的使用PHP正则表达式需要综合考虑¡£

                我的PHP正则入门£¬是起源于网上的一篇文章£¬这篇文章由浅入深的阐述了PHP正则表达式使用的方法£¬我觉得是一个很好的入门材料£¬不过学成还是要 靠个人£¬在使用的过程中£¬还是会不断地忘记£¬因此反反复复的阅读了这篇文章有四五遍£¬对于其中一些比较困难的知识点£¬甚至要用很久才能消化£¬但是只要能见 坚持着看完£¬你会发现自己对于正则的运用能力就会显著提高¡£

                PHP正则表达式的定义£º

                用于描述字符排列和匹配模式的一种语法规则¡£它主要用于字符串的模式分割¡¢匹配¡¢查找及替换操作¡£

                PHP中的正则函数£º

                PHP中有两套正则函数£¬两者功能差不多£¬分别为£º

                一套是由PCRE£¨Perl Compatible Regular Expression£©库提供的¡£使用“preg_”为前?#22909;?#21517;的函数£»

                一套由POSIX£¨Portable Operating System Interface of Unix £©扩展提供的¡£使用以“ereg_”为前?#22909;?#21517;的函数£»£¨POSIX的正则函数库£¬自PHP 5.3以后£¬就不在推荐使用£¬从PHP6以后£¬就将被移除£©

                由于POSIX正则即将推出历史舞台£¬并且PCRE和perl的形式差不多£¬更利于我们在perl和php之间切换£¬所以这里重点介绍PCRE正则的使用¡£

                PCRE正则表达式

                PCRE全称为Perl Compatible Regular Expression£¬意思是Perl兼容正则表达式¡£

                在PCRE中£¬通常将模式表达式£¨即正则表达式£©包含在两个反斜线“/”之间£¬如“/apple/”¡£

                正则中重要的几个概念有£º元字符¡¢转义¡¢模式单元£¨重复£©¡¢反义¡¢引用和断言£¬这些概念都可以在文章[1]中轻松的理解和掌握¡£

                常用的元字符(Meta-character)£º

                元字符     ?#24471;?/p>

                A       匹配字符串串首的原子

                Z       匹配字符串串尾的原子

                       匹配单词的边界     /is/   匹配头为is的字符串   /is/   匹配尾为is的字符串   /is/ 定界

                B       匹配除单?#26102;?#30028;之外的?#25105;?#23383;符   /Bis/   匹配单词“This”中的“is”

                d     匹配一个数字£»等价于[0-9]

                D     匹配除数字以外任何一个字符£»等价于[^0-9]

                w     匹配一个英文字母¡¢数字或下划线£»等价于[0-9a-zA-Z_]

                W     匹配除英文字母¡¢数字和下划线以外任何一个字符£»等价于[^0-9a-zA-Z_]

                s     匹配一个空白字符£»等价于[ ]

                S     匹配除空白字符以外任何一个字符£»等价于[^ ]

                     匹配一个换页符等价于 或 cL

                匹配一个换行符£»等价于 或 cJ

                匹配一个回车符等价于 或 cM

                     匹配一个制表符£»等价于 或cl

                     匹配一个垂直制表符£»等价于 或ck

                oNN   匹配一个八进制数字

                xNN   匹配一个十六进制数字

                cC    匹配一个控制字符

                模式修正符£¨Pattern Modifiers£©£º

                模式修正符在忽?#28304;?#23567;写¡¢匹配多行中使用特别多£¬掌握了这一个修正符£¬往往能解决我们遇到的很多问题¡£

                i     £­可同时匹配大小写字母

                M     £­将字符串视为多行

                S     £­将字符串视为单行£¬换行符做普通字符看待£¬使“.”匹配任何字符

                X     £­模式中的空?#32512;?#30053;不计  

                U     £­匹配到最近的字符串

                e     £­将替换的字符串作为表达使用

                格式£º/apple/i匹配“apple”或“Apple”等£¬忽?#28304;?#23567;写¡£     /i

                PCRE的模式单元£º

                //1 提取第一位的属性

                /^d{2} ([W])d{2}\1d{4}$匹配“12-31-2006”¡¢“09/27/1996”¡¢“86 01 4321”等字符串¡£但上述正则表达式不匹配“12/34-5678”的格式¡£这是因为模式“[W]”的结果“/”已经被存储¡£下个位置“”引用 时£¬其匹配模式也是字符“/”¡£

                当不需要存储匹配结果时使用非存储模式单元“£¨£¿£º£©”

                例如/(?:a|b|c)(D|E|F)\1g/ 将匹配“aEEg”¡£在一些正则表达式中£¬使用非存储模式单元是必要的¡£否则£¬需要改变其后引用的顺序¡£上例还可以写成/£¨a|b|c£©(C|E|F)g/¡£

                PCRE正则表达式函数£º

                以下为引用的内容£º

                1. preg_match()和preg_match_all()  
                2. preg_quote()  
                3. preg_split()  
                4. preg_grep()  
                5. preg_replace()

                函数的具体使用£¬我们可以通过PHP手册来找到£¬下面分享一些平时积累的正则表达式£º

                匹配action属性

                 

                以下为引用的内容£º

                1. $str = '';  
                2.     $match = '';  
                3.     preg_match_all('/s+action="(?!http:)(.*?)"s/'$str$match);  
                4.     print_r($match); 

                在正则中使用回调函数

                 

                以下为引用的内容£º

                1. /**  
                2.    * replace some string by callback function  
                3.    *  
                4.    */ 
                5.   function callback_replace() {  
                6.       $url = 'http://esfang.house.sina.com.cn';  
                7.       $str = '';  
                8.       $str = preg_replace ( '/(?<=saction=")(?!http:)(.*?)(?="s)/e''search($url, \1)'$str );  
                9.         
                10.       echo $str;  
                11.   }  
                12.     
                13.   function search($url$match){  
                14.       return $url . '/' . $match;  
                15.   } 

                带断言的正则匹配

                 

                以下为引用的内容£º

                1. $match = '';  
                2.    $str = 'xxxxxx.com.cn bold font 

                  paragraph text

                  ';  
                3.    preg_match_all ( '/(?<=<(w{1})>).*(?=)/'$str$match );  
                4.    echo "匹配没有属性的HTML标签中的内容£º";  
                5.    print_r ( $match ); 

                替换HTML源码中的地址

                 

                以下为引用的内容£º

                1. $form_html = preg_replace ( '/(?<=saction="|ssrc="|shref=")(?!http:|java£ó£ã£ò£é£ð£ô)(.*?)(?="s)/e''add_url($url, '\1')'$form_html ); 

                最后£¬正则工具虽然?#30475;ó£?#20294;是从效率和编写时间上来讲£¬有的时候可能没有explode来的更直接£¬对于一些紧?#34987;?#32773;要求不高的任务£¬简单¡¢?#30452;?#30340;方法也许更好¡£

                而对于preg和ereg两个系列之间的执行效率£¬曾看到文章说preg要更快一点£¬具体由于使用ereg的时候并不多£¬而且也要推出历史舞台了£¬再加个个人更偏好于PCRE的方式£¬所以?#25910;?#23601;不做比较了£¬熟悉的朋友可以发表下意见£¬谢谢¡£

                 

                (责任编辑£ºadmin)
                织梦二维码生成器
                顶一下
                (0)
                0%
                踩一下
                (0)
                0%
                ------分隔线----------------------------
                发表评论
                请自觉遵守互联网相关的政策法规£¬严禁发布色情¡¢暴力¡¢反动的言论¡£
                评价:
                表情:
                用户名: 验证码:点击我更换图片
                发布者资料
                like 查看详细资料 发送留言 加为好友 用户等级:注册会员 注册时间:2010-04-07 15:04 最后登录:2010-04-07 15:04
                ?#25913;?#21015;表
                推荐内容
                360×ã²Ê4³¡½øÇò²Ê

                <dl id="q0jn1"><ins id="q0jn1"></ins></dl>
              2. <dl id="q0jn1"><font id="q0jn1"><nobr id="q0jn1"></nobr></font></dl>

                <dl id="q0jn1"></dl>

              3. <dl id="q0jn1"><ins id="q0jn1"><nobr id="q0jn1"></nobr></ins></dl><output id="q0jn1"><ins id="q0jn1"></ins></output><dl id="q0jn1"><font id="q0jn1"></font></dl>
                <output id="q0jn1"></output>
                <dl id="q0jn1"></dl>
                <dl id="q0jn1"><font id="q0jn1"></font></dl>
                1. <output id="q0jn1"><ins id="q0jn1"></ins></output>
                  <dl id="q0jn1"><ins id="q0jn1"></ins></dl>

                2. <dl id="q0jn1"></dl>

                        1. <dl id="q0jn1"></dl>
                          1. <dl id="q0jn1"><ins id="q0jn1"></ins></dl>
                          2. <dl id="q0jn1"><font id="q0jn1"><nobr id="q0jn1"></nobr></font></dl>

                            <dl id="q0jn1"></dl>

                          3. <dl id="q0jn1"><ins id="q0jn1"><nobr id="q0jn1"></nobr></ins></dl><output id="q0jn1"><ins id="q0jn1"></ins></output><dl id="q0jn1"><font id="q0jn1"></font></dl>
                            <output id="q0jn1"></output>
                            <dl id="q0jn1"></dl>
                            <dl id="q0jn1"><font id="q0jn1"></font></dl>
                            1. <output id="q0jn1"><ins id="q0jn1"></ins></output>
                              <dl id="q0jn1"><ins id="q0jn1"></ins></dl>

                            2. <dl id="q0jn1"></dl>

                                    1. <dl id="q0jn1"></dl>