zoukankan      html  css  js  c++  java
  • PHP字符串——字符串函数

    比较字符串
    PHP有两个操作符和6个函数用于字符串间相互比较。

    精确比较
    你可以用==和===操作符来比较两个字符串是否相等。这两个操作符的不同在于它们如何处理非字符串数据类型的操作数。==操作符把非字符串操作数转换成字符串,所以它认为3和”3“是相等的。===操作符不进行转换,并且如果参数的数据类型不同就返回false。

    比较操作符(<、<=、>和>=)也用于字符串。当比较操作符的一个参数是数字时,其它参数也将被转换为数字。
    要明确地将两个数作为字符串比较,可以在必要时先把数字转换为字符串,使用strcmp()函数。


    处理和查找字符串
    子串,substr函数复制部分字符串
    $piece=substr(string,start[,length]);
    start参数是在string中要开始复制的位置,如果是0的话,就是说从字符串开头开始复制。length参数是要复制字符的个数(默认是复制到字符串末尾)。例如:
    $name="Fred Flintstone";
    $fluff=substr($name,6,4); //$fluff 是"lint"
    $sound=substr($name,11);  //$sound是"tone"
    要知道一个小字符串在一个大字符串中出现的次数,可以使用substr_count()函数:
    $number=substr_count(big_string,small_string);

    substr_replace()函数允许使用不同方式对字符串进行修改:
    $string=substr_replace(original,new,start[,length]);
    函数通过start(0的意思是字符串的开头)和length指定的值,用字符串new替换original的一部分。如果没有给出第四个参数,substr_replace()删除从start到字符串末尾的文字。
    例如:
    $greeting="good morning citizen";
    $farewell=substr_replace($greeting,"bye",5,7);
    //$farewell为"good bye citizen"
    设定length为0来实现无删除的插入:
    $farewell=substr_replace($farewell,"kind",9,0);
    //$farewell 为"good bye kind citizen"
    设定new为""来来实现无插入的删除:
    $farewell=substr_replace($farewell,"",8);
    //$farewell为"good bye"
    下面是说明如何在字符串的开头插入内容:
    $farewell=substr_replace($farewell,"now it's time to say",0,0);
    //$farewell为"now it's time to say good bye"'
    如果start为负值,则指定从字符串末尾开始到字符串开头替换的字符数:
    $farewell=substr_replace($farewell,"riddance",-3);
    //$farewell为"now it's time to say good riddance"
    如果length为负值,则指定从字符串末尾开始删除的字符个数:
    $farewell=substr_replace($farewell,"",-8,-5);
    //$farewell为"now it's time to say good dance"

    各种字符串函数
    strrev()函数收一个字符串然后返回一个翻转顺序的拷贝:
    $string=strrev(string);
    例如:
    echo strrev("There is no cabal");  //labas on si erehT
    str_repeat()函数接收一个字符串和一个计数参数,然后返回一个由参数string重复count次组成的新字符串:
    $repeated=str_repeat(string,count);
    例如,创建一个分隔线:
    echo str_repeat('-',40);
    str_pad()函数用另一个字符串填充一个字符串。可以选择用什么样的字符串来填充,以及加在左边、右边或两边都加:
    $padded=str_pad(to_pad,length[,with[,pad_type]]);
    默认是以空格加在字符串右边:
    $string=str_pad('Fred Flintstone',30);
    echo "$string:35:Wilma";
    Fred Flintstone          :35:Wilma
    可选的第三个参数是要增加的字符串:
    $string=str_pad('Fred Flintstone',30,'.');
    echo "{$string}35";
    Fred Flintstone........35
    可选的第四个参数可以是STR_PAD_RIGHT(默认)、STR_PAD_LEFT或STR_PAD_BOTH(左右都加,长度均分,使原字符串居中对齐)。例如:
    echo '['.str_pad('Fred Flintstone',30,'',STR_PAD_LEFT)."] ";
    echo '['.str_pad('Fred Flintstone',30,'',STR_PAD_BOTH)."] ";
    [         Fred Flintstone]
    [    Fred Flintstone     ]

    分解字符串
    PHP提供几个函数来将字符串分解为更小的部分。按复杂性递增排序,它们是explode()、strtok()、sscanf()。
    $array=explode(separator,string[,limit]);
    implode(),用含有几个较小字符串的数组创建一个大字符串:$string=implode(separator,array);join()函数是implode()函数的别名。

    字符串查找函数
    有一些函数用于在一个较大字符串中查找字符串或字符。它们分为3个系列:strpos()和strrpos()返回1个位置,strstr()、strchr()等返回找到的字符串,strspn()和strcspn()返回字符串的开头有多少与掩码匹配。
    按字符的ASCII顺序值来查找。因此,下面的函数调用是相等的(因为44是逗号的ASCII值):
    $pos=strpos($large,",");  //查找第一个逗号
    $pos=strpos($large,44);   //也查找第一个逗号
    如果没有找到指定的子串,所有的字符串查找函数都会返回false。如果子串出现在字符串的开头,函数就返回0。因为false可以转换为数字0,所以在测试失败时使用===来比较返回值:
    if($pos===false){
    //没有找到子串
    }else{
    //找到子串,$pos是字符串的偏移量。
    }

    返回位置的查找
    strpos()函数查找一个小字符串在较大字符串中第一次出现的位置:
    $position=strpos(large_string,small_string);
    如果没有找到小字符串,strpos()返回false。
    strrpos()函数查找某个字符(注意是单个字符而不是字符串)在字符串中最后一次出现的位置。它的参数及返回值类型和strpos()相同。
    如果将一个字符串作为第二个参数传递给strrpos(),只查找参数字符串的首字符。

    返回剩余字符串的查找
    strstr()函数查找一个小字符在大字符串中第一次出现的位置,并返回从小字符串开始的部分。
    strstr()的变种有:
    stristr()//不区分大小写的strstr();
    strchr()//strstr()的别名
    strrchr()//查找字符在字符串中最后出现的位置
    和strrpos()一样,strrchr()向后查找字符串,但是都只对字符,而不是一整个字符串。

    strspn()和strcspn()函数告诉你字符串开头有多少个指定的字符:
    $length=strspn(string,charset);
    strcspn()里的c代表complement(补足物),它说明字符串的开头有多少不是由字符集中的字符组成。当感兴趣的字符比不感兴趣的字符多时,使用strcspn()函数。

    分解URL
    parse_url()函数返回一个由URL成分组成的数组:
    $array=parse_url(url);
    例如:
    $bits=parse_url('http://me:secret@example.com/cgi-bin/board?user=fred);
    print_r($bits);
    Array
    (
        [scheme]=>http
        [host]=>example.com
        [user]=>me
        [pass]=>secret
        [query]=>user=fred
    )
    得到的数组键名可能为scheme、host、port、user、pass、path、query和fragment。

  • 相关阅读:
    C macro : the " do { ... } while(0)" magic
    sscanf()函数
    poj-1200-hash-
    hduoj-1735 简单的贪心算法
    hduoj -2570-简单的贪心算法入门
    分治算法应用-最近点对的最小距离-hdu 1007 Quoit Design
    分治算法(转载)
    快速幂总结
    poj 1065 贪心算法
    toj ~3988~递归二叉树三种遍历的转换
  • 原文地址:https://www.cnblogs.com/luwikes/p/3569519.html
Copyright © 2011-2022 走看看