Php經常使用函數系列之字符串處理

轉自個人github
函數示例源碼php

  • 字符串的格式化html

    • rtrim(),除字符串右端的空白字符或其餘預約義字符java

    • ltrim(),刪除字符串開頭空格或者預約的其它字符laravel

    • trim(),此函數返回字符串 str 去除首尾空白字符後的結果git

  • 格式化字符串以便輸出github

    • nl2br(),在字符串全部新行以前插入 HTML 換行標記算法

    • printf(),輸出格式化字符串api

    • sprintf(),把格式化的字符串寫入變量中數組

  • 改變字符串的字母大小寫安全

    • strtoupper(),將字符串轉換爲大寫

    • strtolower(),將字符串轉化爲小寫

    • ucfirst(),將字符串中的第一個單詞的首字母轉化爲大寫

    • ucwords(),將字符串中的每個單詞的首字母轉化爲大寫

  • 格式化字符串以便存儲

    • addslashes(),使用反斜線引用字符串

    • stripslashes(),反引用一個引用字符串

  • 鏈接、分割字符串

    • explode(),使用一個字符串分割另外一個字符串

    • implode(),將一個一維數組的值轉化爲字符串;別名:join()

    • stroke(),標記分割字符串

    • substr(),返回字符串的子串

  • 字符串的排序

    • strcmp(),二進制安全字符串比較,區分大小寫

    • strcasecmp(),二進制安全比較字符串(不區分大小寫)

    • strnatcmp(),使用天然排序算法比較字符串

  • 測試字符串長度

    • strlen(),返回字符串長度

  • 字符串中查找字符串

    • strstr(),查找字符串的首次出現,別名:strchr().

    • strchr(),strstr()的別名.

    • strrchr(),查找指定字符在字符串中的最後一次出現.

    • stristr(),strstr() 函數的忽略大小寫版本

  • 查找字符串的位置

    • strpos(),查找字符串首次出現的位置

    • strrpos(),計算指定字符串在目標字符串中最後一次出現的位置

  • 替換子字符串

    • str_replace(),搜索目標字符串,並替換字符串.

    • substr_replace(),肯定要替換的字符串位置,替換字符串的子串.

1. 字符串的格式化

1.1 字符串的整理:

rtrim(),chop()是此函數的別名,能夠理解爲小名。

    • 除字符串右端的空白字符或其餘預約義字符

    • chop(string,charlist)

      • string:必需。規定要檢查的字符串。

      • charlist:可選。規定從字符串中刪除哪些字符
        若是 charlist 參數爲空,則移除如下字符:

        • "0" - NULL

        • "t" - 製表符

        • "n" - 換行

        • "x0B" - 垂直製表符

        • "r" - 回車

        • " " - 空格

    • 函數示例:

    function funcChop() {
       $str = "Hello YLD!";
       echo $str . "<br>";
       echo chop($str,"YLD!"). "<br>";
       echo rtrim($str,"YLD!")."<br>";//chop()是此函數的別名,能夠理解爲小名。
    }
    • 輸出:

      Hello YLD!
      Hello
      Hello
    ltrim()
    • 刪除字符串開頭空格或者預約的其它字符

    • ltrim(string,charlist)

      • string,必需。規定要轉換的字符串。

      • charlist,可選。規定從字符串中刪除哪些字符。
        若是未設置該參數,則所有刪除如下字符

        • "0" - ASCII 0, NULL

        • "t" - ASCII 9, 製表符

        • "n" - ASCII 10, 新行

        • "x0B" - ASCII 11, 垂直製表符

        • "r" - ASCII 13, 回車

        • " " - ASCII 32, 空格

    • 函數示例:

    function funcLtrim() {
        $str = "~Hello small yellow luo";
        echo $str."<br>";
        echo ltrim($str,"~Hello")."<br>";
        echo ltrim($str,"~he")."<br>";//區分大小寫的;字符串必須連貫
        echo ltrim($str,"ll")."<br>";//必須從左側第一個字符開始;
    }
    • 輸出:

    ~Hello small yellow luo
    small yellow luo
    Hello small yellow luo
    ~Hello small yellow luo

    trim()

    • 此函數返回字符串 str 去除首尾空白字符後的結果。

    • ltrim(string,charlist)

      • string,必需。規定要轉換的字符串。

      • charlist,可選。規定從字符串中刪除哪些字符。<br/>

        若是未設置該參數,則所有刪除如下字符<br/>
               "\0" - ASCII 0, NULL<br/>
               "\t" - ASCII 9, 製表符<br/>
               "\n" - ASCII 10, 新行<br/>
               "\x0B" - ASCII 11, 垂直製表符<br/>
               "\r" - ASCII 13, 回車<br/>
               " " - ASCII 32, 空格<br/>
    • 函數示例:

    1. funcTrim() {
      $question = " 0 what's up? r";
      $answer = " no";
      var_dump($question.$answer);
      var_dump(trim($question).trim($answer));
      }

    • 輸出:

      string(18) " what's up? no" 
      string(12) "what's up?no"  //注意字符串的個數變化

    1.2 格式化字符串以便輸出

    1.2.1 nl2br()

    • 在字符串全部新行以前插入 HTML 換行標記.

    • 在字符串 string 全部新行以前插入<br /><br>,並返回。

    • string nl2br ( string $string [, bool $is_xhtml = true ] )

      • string,輸入字符串

      • is_xhtml,是否使用 XHTML 兼容換行符

    • 函數示例:

    function funcNl2br() {
        echo nl2br("luo is \n ugly \r\n");
        $string = "Small\r\nYellow\n\rLuo\nis\rstupid";
        echo nl2br($string,false);//注意輸出換行
    }
    • 輸出:

    luo is 
    ugly 
    Small
    Yellow
    Luo
    is
    stupid

    1.2.2 爲打印輸出而格式化

    printf()

    • 輸出格式化字符串

    • printf ( string $format [, mixed $args [, mixed $... ]] )

    • 函數示例:

    function funcPrintf() {
        //與java中格式化輸出同樣
        printf('I need to pay $%.02lf',1.3568);
        echo "<br>";
        $goodevil = array('good', 'evil');
        //巧用printf
        printf_array('There is a difference between %s and %s', $goodevil);
    
    }
    function printf_array($format, $arr)
    {
        //回調printf函數
        return call_user_func_array('printf', array_merge((array)$format, $arr));
    }
    • 輸出:

    I need to pay $1.36
    There is a difference between good and evil

    sprintf()

    • sprintf() 函數把格式化的字符串寫入變量中。

    • sprintf(format,arg1,arg2,arg++)

      • format,必需。規定字符串以及如何格式化其中的變量。可能的格式值:

        • %% - 返回一個百分號 %

        • %b - 二進制數

        • %c - ASCII 值對應的字符

        • %d - 包含正負號的十進制數(負數、0、正數)

        • %e - 使用小寫的科學計數法(例如 1.2e+2)

        • %E - 使用大寫的科學計數法(例如 1.2E+2)

        • %u - 不包含正負號的十進制數(大於等於 0)

        • %f - 浮點數(本地設置)

        • %F - 浮點數(非本地設置)

        • %g - 較短的 %e 和 %f

        • %G - 較短的 %E 和 %f

        • %o - 八進制數

        • %s - 字符串

        • %x - 十六進制數(小寫字母)

        • %X - 十六進制數(大寫字母

      • arg1,必需。規定插到 format 字符串中第一個 % 符號處的參數。

      • arg2,可選。規定插到 format 字符串中第二個 % 符號處的參數。

      • arg++,可選。規定插到 format 字符串中第3、四等 % 符號處的參數。

    • 函數示例:

    function funcSprintf() {
        $number  = 2;
        $location = "HangZhou";
        //與printf相比,只有格式化的功能,沒有打印的功能
        $text = sprintf("I have %u friends in %s",$number,$location);
        echo $text;
    }
    • 輸出:

    I have 2 friends in HangZhou
    • note:若是想要1.2輸出1.20,可採用此函數。

    1.3 改變字符串的字母大小寫

    strtoupper()

    • 將字符串轉換爲大寫

    • string strtoupper ( string $string )

    • 函數示例:

    function funcStrtoupper() {
        $str = "i want to become upper";
        echo $str."<br>";
        $str = strtoupper($str);
        echo $str;
    }
    • 輸出:

    i want to become upper
    I WANT TO BECOME UPPER

    strtolower()

    • 將字符串轉化爲小寫

    • string strtolower() ( string $string )

    • 函數示例:

    function funcStrtolower() {
        $str = "I WANT TO BECOME LOWER";
        echo $str."<br>";
        $str  = strtolower($str);
        echo $str;
    }
    • 輸出:

    I WANT TO BECOME LOWER
    i want to become lower

    ucfirst()

    • 將字符串中的第一個單詞的首字母轉化爲大寫

    • string ucfirst() ( string $string )

    • 函數示例:

    function funcUcfirst() {
        //upper capitalize first的縮寫,maybe
        $str = "i want to become upper";
        echo $str."<br>";
        $str = ucfirst($str);
        echo $str."<br>";
    // note:只有第一個單詞的首字母大寫了哦
    }
    • 輸出:

    i want to become upper
    I want to become upper

    ucwords()

    • 將字符串中的每個單詞的首字母轉化爲大寫

    • string ucwords() ( string $string )

    • 函數示例:

    function funcUcwords() {
        $str = "yld want to become upper";
        echo $str."<br>";
        $str = ucwords($str);
        echo $str."<br>";
        //note:每一個單詞的首字母都變成大寫了哦
    }
    • 輸出:

    yld want to become upper
    Yld Want To Become Upper

    1.4 格式化字符串以便存儲

    addslashes()

    • 使用反斜線引用字符串

    • string addslashes ( string $str )

    • 函數示例:

    function funcAddslashes() {
    //add slashes 添加反斜槓
        $str = 'Hi Y"LD ';
        $str = addslashes($str);
        echo $str."<br>";
        $str_one = "Hi Y'LD";
        $str_one = addslashes($str_one);
        echo $str_one."<br>";
        //var_dump(get_magic_quotes_gpc($str_one));
        //默認地,PHP 對全部的 GET、POST 和 COOKIE 數據自動運行 addslashes()。
        //因此您不該對已轉義過的字符串使用 addslashes(),由於這樣會致使雙層轉義。
        //遇到這種狀況時可使用函數 get_magic_quotes_gpc() 進行檢測。
        var_dump(get_magic_quotes_gpc());
    }
    • 輸出:

    Hi Y\"LD 
    Hi Y\'LD
    bool(false)

    stripslashes()

    • 反引用一個引用字符串

    • string stripslashes ( string $str )

    • 函數示例:

    function funcStripslashes() {
    //反引用一個引用字符串
        $str = "Hi Y\'LD";
        echo stripslashes($str);
    }
    • 輸出:

    Hi Y'LD

    2. 鏈接、分割字符串

    explode()

    • 使用一個字符串分割另外一個字符串

    • array explode ( string $delimiter , string $string [, int $limit ] )

      • delimiter 邊界上的分隔字符。

      • string 輸入的字符串。

      • limit 若是設置了limit參數而且是正數,則返回的數組包含最多limit個元素,而最後那個元素將包含 string 的剩餘部分。

        • 若是 limit 參數是負數,則返回除了最後的 -limit 個元素外的全部元素。

        • 若是 limit 是 0,則會被當作 1。

    • 函數示例:

    function funcExplode() {
    
        $str = 'one|two||three|four';
    
        // 默認輸出
        print_r(explode('|',$str));
        // 正數的 limit note:three和four成爲了同一個字符串
        print_r(explode('|', $str, 4));
    
        // 負數的 limit(自 PHP 5.1 起) note:four沒有被輸出
        print_r(explode('|', $str, -1));
    }
    • 輸出:

    Array
    (
        [0] => one
        [1] => two
        [2] => 
        [3] => three
        [4] => four
    )
    Array
    (
        [0] => one
        [1] => two
        [2] => 
        [3] => three|four
    )
    Array
    (
        [0] => one
        [1] => two
        [2] => 
        [3] => three
    )

    implode()

    • 將一個一維數組的值轉化爲字符串;別名:join()

    • string implode ( string $glue , array $pieces )

      • glue 默認爲空的字符串

      • pieces 你想要轉換的數組

    • 函數示例:

    function funcImplode() {
        $arr = array('one-dimensional','array','values','can','be','converted','to','string');
        $arr = implode(' ',$arr);
        print_r($arr);
    }
    • 輸出:

    one-dimensional array values can be converted to string

    stroke()

    • 標記分割字符串

    • string strtok ( string $str , string $token )

      • str 被分紅若干子字符串的原始字符串

      • token 分割 str 時使用的分界字符

    • note:此函數可能返回布爾值 FALSE,但也可能返回等同於 FALSE 的非布爾值。應使用===運算符來測試返回值

    • 函數示例:

    function funcStrtok() {
        $str = "I \nlove \tlaravel";
        $tok = strtok($str,"\n\t");
        while ($tok !== false) {
            echo "Word=$tok<br />";
            $tok = strtok(" \n\t");
        }
    }
    • 輸出:

    Word=I 
    Word=love
    Word=laravel

    substr()

    • 返回字符串的子串

    • string substr ( string $string , int $start [, int $length ] )

      • string 輸入字符串。必須至少有一個字符

      • start

        • 若是 start>0,返回的字符串將從 string 的 start 位置開始,從 0 開始計算

        • 若是 start<0,返回的字符串將從 string 結尾處向前數第 start 個字符開始

        • 若是 string 的長度小於 start,將返回 FALSE

      • length

        • 若是length>0,返回的字符串將從 start 處開始最多包括 length 個字符(取決於 string 的長度)。

        • 若是length<0,那麼 string 末尾處的許多字符將會被漏掉(若 start 是負數則從字符串尾部算起)。若是 start 不在這段文本中,那麼將返回一個空字符串。

        • 若是length=0,FALSE 或 NULL 的 length,那麼將返回一個空字符串。

        • 若是沒有提供 length,返回的子字符串將從 start 位置開始直到字符串結尾。

    • 函數示例:

    function funcSubstr() {
        $str = 'abcdefg';
    
        echo 'str: ';var_dump($str);
        echo 'start=1: ';var_dump(substr($str,1));
        echo 'start=1 length=-1: ';var_dump(substr($str,1,-1));
        echo 'start=1 length=0: ';var_dump(substr($str,1,0));
        echo 'start=1 length=2: ';var_dump(substr($str,1,2));
        echo 'start=3 length=9>count($str): ';var_dump(substr($str,3,9));
        echo 'start=8: ';var_dump(substr($str,8));
        echo 'start=-3: ';var_dump(substr($str,-3));
        echo 'start=-1 length=-4: ';var_dump(substr($str,-1,-4));
        echo 'start=-3 length=2: ';var_dump(substr($str,-3,2));
    
    }
    • 輸出:

    str: string(7) "abcdefg"
    start=1: string(6) "bcdefg"
    start=1 length=-1: string(5) "bcdef"
    start=1 length=0: string(0) ""
    start=1 length=2: string(2) "bc"
    start=3 length=9>count($str): string(4) "defg"
    start=8: bool(false)
    start=-3: string(3) "efg"
    start=-1 length=-4: string(0) ""
    start=-3 length=2: string(2) "ef"

    3.字符串的比較

    3.1 字符串的排序

    strcmp()

    • 二進制安全字符串比較,區分大小寫

    • int strcmp ( string $str1 , string $str2 )

    • 返回值,若是 str1 小於 str2 返回 < 0; 若是 str1 大於 str2 返回 > 0;若是二者相等,返回 0。

    • 函數示例:

    function funcStrcmp() {
         var_dump(strcmp('hi','hi'));
         var_dump(strcmp('Hi','hi'));
         var_dump(strcmp('hi','Hi'));
     }
    • 輸出:

    int(0)
    int(-32)
    int(32)

    strcasecmp()

    • 二進制安全比較字符串(不區分大小寫)

    • int strcmp ( string $str1 , string $str2 )

    • 返回值,若是 str1 小於 str2 返回 < 0; 若是 str1 大於 str2 返回 > 0;若是二者相等,返回 0。

    • 函數示例:

    function funcStrcasecmp() {
        var_dump(strcmp('hi','hi'));
        var_dump(strcmp('hi','Hi'));
        var_dump(strcmp('hi','Hh'));
    }
    • 輸出:

    int(0)
    int(32)
    int(32)

    strnatcmp()

    • 使用天然排序算法比較字符串

    • int strnatcmp ( string $str1 , string $str2 )

    • 返回值,若是 str1 小於 str2 返回 < 0; 若是 str1 大於 str2 返回 > 0;若是二者相等,返回 0。

    • 函數示例:

    function funcStrnatcmp() {
        $arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");
        echo "標準字符串比較\n";
        usort($arr1, "strcmp");
        print_r($arr1);
        echo "\n天然秩序的字符串比較\n";
        usort($arr2, "strnatcmp");
        print_r($arr2);
    }
    • 輸出:

    標準字符串比較
    Array
    (
        [0] => img1.png
        [1] => img10.png
        [2] => img12.png
        [3] => img2.png
    )
    
    天然秩序的字符串比較
    Array
    (
        [0] => img1.png
        [1] => img2.png
        [2] => img10.png
        [3] => img12.png
    )

    3.2 測試字符串長度

    strlen()

    • 返回字符串長度

    • int strlen ( string $string )

    • 函數示例:

    function funcstrlen() {
        $str = 'how long is my leg';
        var_dump($str);
        var_dump(strlen($str));
    }
    • 輸出:

    string(18) "how long is my leg"
    int(18)

    4.字符串查找和替換

    4.1 字符串中查找字符串

    strstr() 別名:strchr()

    • 查找字符串的首次出現

    • string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

    • 函數示例:

    function funcStrstr()
    {
        $email = 'name@example.com';
        $domain = strstr($email, '@');
        var_dump($domain); // 打印 @example.com
    
        $user = strstr($email, '@', true); // 從 PHP 5.3.0 起
        var_dump($user); // 打印 name
    }
    • 輸出:

    string(12) "@example.com"
    string(4) "name"

    stristr()

    • strstr() 函數的忽略大小寫版本,用法同上.

    strrchr()

    • 查找指定字符在字符串中的最後一次出現

    • string strrchr ( string $haystack , mixed $needle )

    • 函數示例:

    function funcStrrchr()
    {
        $path = '/www/public_html/index.html';
        var_dump(strrchr($path, "/"));
        $filename = substr(strrchr($path, "/"), 1);
        var_dump($filename);
    }
    • 輸出:

    string(11) "/index.html"
    string(10) "index.html"

    4.2 查找字符串的位置

    strpos()

    • 查找字符串首次出現的位置

    • int strpos ( string $haystack , string $needle [, int $offset = 0 ] )

    • 函數示例:

    function funcStrpos()
    {
        $string = "hello hello hello hello";
        $find = "e";
        // e的位置是一、七、1三、19
        var_dump(strpos($string, $find, 1));//從開始數,第1個位置開始查找
        var_dump(strpos($string, $find, 3));//從開始數,第3個位置開始查找
        var_dump(strpos($string, $find, 8));//從開始數,第8個位置開始查找
    }
    • 輸出:

    int(1)
    int(7)
    int(13)

    strrpos()

    • 計算指定字符串在目標字符串中最後一次出現的位置

    • int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )

    • 函數示例:

    function funcStrrpos()
    {
        $string = "hello hello hello hello";
        $find = "e";
        var_dump(strrpos($string, $find));
        var_dump(strrpos($string, $find, -5));//從末尾數,第5個位置開始查找
        var_dump(strrpos($string, $find, -23));//
    }
    • 輸出:

    int(19)
    int(13)
    bool(false)

    4.3 替換子字符串

    str_replace()

    • 搜索目標字符串,並替換字符串

    • mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

      • search,查找的目標值,能夠是字符串,也能夠是一維數組

      • replace,search 的替換值,能夠是字符串,也能夠是一維數組

      • subject,執行替換的字符串或者數組,能夠是字符串,也能夠是一維數組

      • count,只容許是一個variables。是執行替換的次數

    • 函數示例:

    function funcStrReplace()
    {
        //search replace 都爲數組 且replace的值少於search的值
        // 多餘的替換會使用空字符
        $phrase = "You should eat fruits, vegetables, and fiber every day.";
        $healthy = array("fruits", "vegetables", "fiber");
        $yummy = array("pizza", "beer");
        $newphrase = str_replace($healthy, $yummy, $phrase);
        var_dump($newphrase);
    
        //search replace 都爲字符串
        $str = str_replace("ll", "", "good golly miss molly!", $count);
        var_dump($str);
        var_dump($count);
    
        // 輸出 F ,由於 A 被 B 替換,B 又被 C 替換,以此類推...
        // 因爲從左到右依次替換,最終 E 被 F 替換
        $search = array('A', 'B', 'C', 'D', 'E');
        $replace = array('B', 'C', 'D', 'E', 'F');
        $subject = 'A';
        var_dump(str_replace($search, $replace, $subject));
    
        // 輸出: apearpearle pear
        // 因爲上面提到的緣由
        $letters = array('a', 'p');
        $fruit = array('apple', 'pear');
        $text = 'a p';
        $output = str_replace($letters, $fruit, $text);
        var_dump($output);
    
    }
    • 輸出:

    string(43) "You should eat pizza, beer, and  every day."
    string(18) "good goy miss moy!"
    int(2)
    string(1) "F"
    string(16) "apearpearle pear"

    substr_replace()

    • 肯定要替換的字符串位置,替換字符串的子串

    • mixed substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] )

      • string,輸入的字符串

      • replacement,替換字符串

      • start,字符串開始位置

      • length,

        • 正數,表示 string 中被替換的子字符串的長度

        • 負數,它表示待替換的子字符串結尾處距離 string 末端的字符個數

    • 函數示例:

    function funcSubstrReplace()
    {
        $str = "Hello,YLD.Would you like eat something?";
        $replace = "Hi";
        var_dump(substr_replace($str,$replace,0));
        var_dump(substr_replace($str,$replace,0,5));
        var_dump(substr_replace($str,$replace,0,-7));
    }
    • 輸出:

    string(2) "Hi"
    string(36) "Hi,YLD.Would you like eat something?"
    string(9) "Hiething?"
    相關文章
    相關標籤/搜索