视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php 正则特殊字符转义的方法
2020-11-02 18:01:58 责编:小采
文档


php正则特殊字符转义的方法:首先创建PHP示例文件;然后定义字符串;最后通过反斜杠对特殊字符进行转义,并对变量进行解析即可。

推荐:《PHP视频教程》

问题

最近使用PHP正则表达式,书写表达式字符串的时候遇到了一些问题,不知道何时需要用反斜杠“”,现在进行一些梳理。

PHP字符串

PHP字符串的定义方法有4种:

  • 单引号
  • 双引号
  • heredoc 语法结构
  • nowdoc 语法结构 (自PHP 5.3.0以后)
  • 在定义字符串的时候,会对特殊字符进行转义,对变量进行解析。

    特殊字符包括:

    项目内容备注
    换行 LF 或 0x0A
    回车 CR 或 0x0D
    水平制表符 HT 或 0x09
    垂直制表符vVT 或 0x0B
    换页fFF 或 0x0C
    反斜杠
    美元符号$
    双引号"
    单引号'
    8进制字符[0-7]{1,3}
    16进制字符x[0-9A-Fa-f]{1,2}

    这部分详见 PHP Mannual ,这里简要记述一下:

    单引号中,对单引号(')与反斜杠()进行转义,对其它字符原意输出;

    双引号中,对除双引号(")的特殊字符进行转义,对变量进行解析。

    因此,在这两种常见的字符串定义中,对反斜杠()总是要转义的。

    PHP 正则表达式

    PHP提供了两套正则表达式函数库:【参考】

    一套是由PCRE(Perl Compatible Regular Expression)库提供的。使用“preg_”为前缀命名的函数;
    一套由POSIX(Portable Operating System Interface of Unix )扩展提供的(PHP默认)。使用以“ereg_”为前缀命名的函数;

    正则表达式提供了匹配、替换、分割的功能。

    目前只是用了perl风格的正则函数,以下仅对这类的字符串进行说明。

    Perl风格的正则表达式,要求包含在定界符("/" 或 "#")中,如下面这样:【参考】

    $str = 'http://www.youku.com/show_page/id_ABCDEFG.html';
    $regex = '/^http://([w.]+)/([w]+)/([w]+).html$/i';
    $regex = '#^http://([w.]+)/([w]+)/([w]+).html$#i';

    为了将一个URL进行分割,$regex 变量定义了正则表达式字符串:

    ^http://([w.]+)/([w]+)/([w]+).html$

    这个字符串包含了一些特殊字符,如"/" 与".",这在Perl风格中需要用反斜杠("")进行转义定义,如下:

    ^http://([w.]+)/([w]+)/([w]+).html$

    同时这个字符串需要被包含在定界符中,于是就有了上面的两类表示方式;以"#"为定界符的,不需要对其中的"/" 进行转义。

    正则表达式转义

    在正则表达式中,若要匹配以下单个字符,都需要用反斜杠("")进行转义:

    ""、"?"、"*"、"^"、"$"、"+"、"("、")"、"|"、"{"、"["

    在Perl风格的正则表达式中,如果匹配以下单个字符,或者上面未匹配的单个字符,还需要用反斜杠("")进行转义:

    ^=}]/:<>.'"

    总结

    要写出一个正确的Perl风格正则表达式字符串,需要进行三步:

    写出正确的正则表达式,注意特殊字符的转义

    放入定界符中,并以Perl风格的转义规则进行转义

    对上述字符串的内容,按照PHP字符串定义的方式进行转义

    下载本文
    显示全文
    专题