zoukankan      html  css  js  c++  java
  • PHP中正则表达式函数(Perl兼容)

    PHP为使用Perl兼容的正则表达式搜索字符串提供了7个函数,分别是preg_grep()、preg_match()、preg_match_all()、preg_quote()、preg_replace()、preg_replace_callback()和preg_split()

    1,  preg_grep()函数,将数组中符合要求的元素组成数组返回。函数样式如下,

    array  preg_grep(string $pattern,array  $input),$pattern为查询条件,$input待查询数组。

    如:

    <?php
    $foods = array("pasta","steak","fish","potatoes");
    $food = preg_grep("/^p/",$foods);
    var_dump($food);
    ?>
    

    输出:

    array(2) { [0]=> string(5) "pasta" [3]=> string(8) "potatoes" }

    2,preg_split()函数,将字符串按照要求分割成数组返回

    array preg_split(string $pattern,string $input,int $limit),$pattern分隔符,$input输入字符串,$limit为限定返回数组中元素个数。

    如:

    <?php
    $delimitedText="Jason+++Gilmore++++++Columbus++++OH";
    $fields = preg_split("/(+)+/",$delimitedText);
    var_dump($fields);
    ?>
    

    输出:

    array(4) { [0]=> string(5) "Jason" [1]=> string(7) "Gilmore" [2]=> string(8) "Columbus" [3]=> string(2) "OH" }

    3,preg_match()函数,在字符串查找某个元素,存在返回true,否则返回false。

    int preg_match(string $pattern,string $subject,$matches),$pattern查询的字符串,$subject待查询的字符串,$matches存放查询结果的数组,$matches[0]包含完整模式匹配到的文本,$matches[1]包含第一个捕获子组匹配到的文本,依次类推。

    如:

    $line = "Vim is the greatest word processor ever created! vim is greate";
    if(preg_match("/vim/i",$line,$matches)){
        echo "字符串存在元素!";
    }
    var_dump($matches);

    输出:

     字符串存在元素!array(1) { [0]=> string(3) "Vim" }

    4,preg_match_all()函数,preg_match_all()与preg_match()功能类似,不过还是有差异。preg_match()结果匹配一次成功后停止匹配;preg_match_all()实现所有结果的匹配。

    如:

    $pattern = ‘/^(http://)?([^/]+)/i‘;
    $subject = ‘http://www.php.net/index.html‘;
    preg_match_all($pattern,$subject,$match);
    var_dump($match);
    

    输出:

    array (size=3)
      0 => 
        array (size=1)
          0 => string ‘http://www.php.net‘ (length=18)
      1 => 
        array (size=1)
          0 => string ‘http://‘ (length=7)
      2 => 
        array (size=1)
          0 => string ‘www.php.net‘ (length=11)
    

    数组中第一个$matchs[0]就是整个$pattern匹配到的文本元素

    $matchs[1] 匹配到的是子组 (http://) 匹配到的文本

    $matchs[2] 匹配到的是子组(^/+) 匹配到的文本

    5,preg_replace()函数,在数组或字符串中查找并替换某部分。

    mixed preg_replace(mixed $pattern,mixed $replacement,mixed $str,int $limit),$pattern替换值,$replacement被替换值,$str查找替换的字符串,$limit指定应当发生多少次匹配,不设置或设置为-1将替换所有出现的情况。$pattern和$replacement可以使数组,即$replacement[i]替换$pattern[i]。

    如:

    <?php
    $text = "This is a link to http://www.wjgilmore.com/.";
    echo preg_replace("/http://(.*)//","<a href="${0}">${0}</a>",$text);
    ?>
    

    输出:

    This is a link to http://www.wjgilmore.com/.

     如:

    <?php
    $draft = "In 2007 the company faced plummeting revenues and scandal";
    $keywords = array("/faced/","/plummeting/","/scandal/");
    $replacements = array("celebrated","skyrocketing","expansion");
    echo preg_replace($keywords,$replacements,$draft);
    ?>
    

    输出:

    In 2007 the company celebrated skyrocketing revenues and expansion

    6,preg_replace_callback()函数,此函数与preg_replace()函数类似,此处的被替换值$replacement可以用函数实现。

    mixed preg_replace_callback(mixed $pattern,callback callback,mixed$str,int $limit)

    如:

    function acronym($matches){
        //通常: $matches[0]是完成的匹配
        //$matches[1]是第一个捕获子组的匹配
        //以此类推
        $acronyms = array(
            'WWW'=>'World Wide Web',
            'IRS'=>'Internal Revenue Service',
            'PDF'=>'Portable Document Format'
        );
        if(isset($acronyms[$matches[1]])){
            return $matches[1]."(".$acronyms[$matches[1]].")";
        }else{
            return $matches[1];
        }
    }
    $text = "The <acronym>IRS</acronym> offers tax forms in <acronym>PDF</acronym> format on the <acronym>WWW</acronym>";
    $newtext = preg_replace_callback("/<acronym>(.*)</acronym>/U","acronym",$text);
    print_r($newtext);
    ?>

    输出:

    The IRS(Internal Revenue Service) offers tax forms in PDF(Portable Document Format) format on the WWW(World Wide Web)

    7,preg_quote()函数,在字符串中特殊字符前差一个反斜线。这些特殊字符包括$^*()+={}[]|\:<>。其形式为:

    string preg_quote(string $str,string $delimiter),$delimiter用于指定用于正则表达式的定界符,使用它也要用反斜线转义。

    如:

    <?php
    $text = "Tickets for the bout are going for $500.";
    echo preg_quote($text);
    ?>
    

    输出:

    Tickets for the bout are going for $500.

  • 相关阅读:
    Vue.js
    Spark Streaming自定义Receiver
    Hive UDF函数
    HBase表预分区与压缩
    Hive映射HBase表的几种方式
    Spark源码阅读之存储体系--存储体系概述与shuffle服务
    Spark Streaming实时写入数据到HBase
    基于Spark的用户行为路径分析
    Spark Streaming消费Kafka Direct方式数据零丢失实现
    CountDownLatch如何使用
  • 原文地址:https://www.cnblogs.com/usa007lhy/p/6579895.html
Copyright © 2011-2022 走看看