最新公告
  • 欢迎您光临波比源码,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • PHP与正则表达系列之一: PHP中的正则表达式

    今天起,会开始弄一个PHP教程系列文章. 主要是针对正则表达式的。

    大概的内容排序是这样安排的:

    1. PHP 中的正则表达式

    2. 八个实用的PHP正则表达式

    3. 如何书写更易阅读的PHP正则表达式

    4. 半小时精通正则表达式

    5. 正则在文章采集系统中的应用及常见问题答疑

    6. …更多策划中

    文章内容来源方面,有本站旧文重新整理而来,也有翻译英文文献而来(感谢在加拿大的!oEL同学),还有些是个人心得。

    个人能力有限,肯定有一些错误,发现的朋友请给予提醒以及时更正. 不至误导新手. 如果文章能给大家一些参考,就很满足了。

    PHP与正则表达系列之: PHP 中的正则表达式

    正则表达式简介及正则表达式在PHP中的作用

    正则表达式是一种表示规则的途经,在 PHP 中利用这些规则可以让你灵活变通地匹配、检验、替换以及字符串。本文涉及到 PCRE 的基础,以及如何使用 preg_match(),preg_replace(),and preg_split() 函数。

    接下来就让我们从实例循序渐进地开始学习如何使用这些函数。

    规则匹配 preg_match

    利用 preg_match(),我们可以完成字符串的规则匹配。如果找到一个匹配,preg_match() 函数返回 1,否则返回 0。还有一个可选的第三参数可以让你把匹配的部分存在一个数组中。在验证数据时这个功能可以变得非常有用。

    $string = "football";
    if (preg_match(‘/foo/’, $string)) {
    // 匹配正确
    }

    上面的例子将成功匹配,因为单词 football 里面包含 foo。现在我们来试一个更复杂的,例如验证一个 Email 地址。

    $string = "first.last@domain.uno.dos";
    if (preg_match(
    ‘/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/’,
    $string)) {
    // 验证Email地址
    }

    这个例子将验证出此 Email 地址为正确格式。现在让我们来看看这段正则表达式所代表的各种规则。

    PCRE 顾名思义,与在 Perl 中的正则表达式有相同的语法,所以每段正则表达式必须要有一对定界符。我们一般使用 / 为定界符。

    开头的 ^ 和结尾的 $ 让PHP从字符串开头检查到结尾。假使没有 $,程序仍会匹配到 Email 的末尾。

    [ 和 ] 被用来限制许可输入类型。例如 a-z 允许所有的小写字母,A-Z 允许所有的大写字母,0-9 所有数字,等等,以及更多其他类型。

    { 和 } 被用来限制期望的字符数。例如 {2,4} 表示字符串的每一节可以有 2-4 字符长度,像是 .com.cn 或 .info。在这里, "." 并不算一个字符,因为 {2,4} 之前定义的许可输入类型只有大小写字母,故此段只匹配大小写字母

    ( 和 ) 被用来合并小节,并定义字符串中必须存在的字符。(a|b|c) 能够匹配 a 或 b 或 c。

    (.) 将匹配所有字符,而 [.] 只匹配 "." 本身。

    要使用一些符号本身,必须在前增加一个 。这些字符有: ( ) [ ] . * ? + ^ | $

    规则替换 preg_replace

    preg_replace 允许你替换字符串中匹配到你定义的正则表达式。一个简单的注释移除功能:

    preg_replace(‘[(/*)+.+(*/)]’, ”, $val);

    这段代码可以移除在 PHP 和 CSS 中使用 /* 注释 */ 格式的多多行注释。其中的三个参数分别为正则表达式,要替换成的字符串和要替换的目标字符串(这里要做移除功能,所以是个空白字符串 -> ”)。如果你想匹配次级规则,可以使用 $0 代表全部匹配,$1、$2 等,以此类推代表分别的次级规则。

    规则分割preg_split

    preg_split 可以将整段字符串按匹配到的正则表达式分割成 1、2或更多字符的多段。比如获取标签,无论是用空格还是逗号分隔的:

    $tags = preg_split(‘/[,]/’, ‘my,tags,unevenly,spaced’);
    print_r($tags);

    正则表达式是一个很实用的技巧,让你可以专注于所期望得到的内容。

    但有时候一段正则表达式并不能让你如愿以偿得到预期的结果是件很烦人的事,所以我将在本系列的第二篇文章附上一些简单的语法指南希望能够帮到大家。

    附:PCRE 语法指南

    / 定界符
    ^ 字符串头
    $ 字符串尾
    [a-z] 所有小写字母
    [A-Z] 所有大写字母
    [0-9] 所有数字
    ? 零或一个紧接前的字符
    * 零或多个紧接前的字符
    + 一或多个紧接前的字符
    {4} 4个紧接前的字符
    {4,8} 4-8个紧接前的字符
    . 任意字符
    (red|green|blue) Red 或 green 或 blue(红 或 绿 或 蓝)
    s 空格

    特殊字符(需要在前加 )
    ( ) [ ] . * ? + ^ | $

    波比源码 – 精品源码模版分享 | www.bobi11.com
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

    波比源码 » PHP与正则表达系列之一: PHP中的正则表达式

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    波比源码
    一个高级程序员模板开发平台
    升级波友尊享更多特权立即升级