官术网_书友最值得收藏!

5.2 字符串操作

字符串的操作在PHP編程中占有重要的地位,幾乎所有PHP腳本的輸入與輸出都會用到字符串。尤其是在PHP項目開發過程中,為了實現某項功能,經常需要對某些字符串進行特殊處理,如獲取字符串的長度、截取字符串、替換字符串等。在本節中將對PHP常用的字符串操作技術進行詳細的講解,并通過具體的實例加深對字符串函數的理解。

5.2.1 去除字符串首尾空格和特殊字符

視頻講解:光盤\TM\lx\5\02 去除字符串首尾空格和特殊字符.mp4

用戶在輸入數據時,經常會在無意中輸入多余的空格,有些情況下,字符串中不允許出現空格和特殊字符,此時就需要去除字符串中的空格和特殊字符。在PHP中提供了trim()函數去除字符串左右兩邊的空格和特殊字符,ltrim()函數去除字符串左邊的空格和特殊字符,rtrim()函數去除字符串中右邊的空格和特殊字符。

1.trim()函數

trim()函數用于去除字符串首尾處的空白字符(或者其他字符)。

語法格式如下:

        string trim(string str [, string charlist]);

其中,str是要操作的字符串對象;charlist為可選參數,一般要列出所有希望過濾的字符,也可以使用“..”列出一個字符范圍。如果不設置該參數,則所有的可選字符都將被刪除。如果不指定charlist參數,trim()函數將去除表5.1中的字符。

表5.1 不指定charlist參數時trim()函數去除的字符

注意

除了以上默認的過濾字符列表外,也可以在charlist參數中提供要過濾的特殊字符。

【例5.1】使用trim()函數去除字符串左右兩邊的空格及特殊字符“\r\r(: :)”,實例代碼如下:(實例位置:光盤\TM\sl\5\1)

        <?php
          $str="\r\r(:@_@ 創圖書編撰偉業 展軟件開發雄風 @_@:)";
          echo trim($str);      //去除字符串左右兩邊的空格
          echo"<br>";            //執行換行
          echo trim($str, "\r\r(: :)"); //去除字符串左右兩邊的特殊字符“\r\r(: :)”
        ?>

結果為:(:@_@ 創圖書編撰偉業 展軟件開發雄風 @_@:)

@_@ 創圖書編撰偉業 展軟件開發雄風 @_@

2.Itrim()函數

ltrim()函數用于去除字符串左邊的空格或者指定字符串。

語法格式如下:

        string ltrim( string str [, string charlist]);

【例5.2】使用ltrim()函數去除字符串左邊的空格及特殊字符“(:@_@”,實例代碼如下:(實例位置:光盤\TM\sl\5\2)

        <?php
          $str="  (:@ @  創圖書編撰偉業  @_@:)   ";
          echo ltrim($str);             //去除字符串左邊的空格
          echo"<br>";                    //執行換行
          echo ltrim($str, "(:@ @");   //去除字符串左邊的特殊字符“(:@_@”
        ?>

結果為:(:@_@ 創圖書編撰偉業 @_@:)

創圖書編撰偉業 @_@:)

3.rtrim()函數

rtrim()函數用于去除字符串右邊的空格或者指定字符串。

語法格式如下:

        string rtrim(string str [, string charlist]);

【例5.3】使用rtrim()函數去除字符串右邊的空格及特殊字符“@_@:)”,實例代碼如下:(實例位置:光盤\TM\sl\5\3)

        <?php
          $str="  (:@_@  展軟件開發雄風  @_@:)   ";
          echo rtrim($str);             //去除字符串右邊的空格
          echo"<br>";                    //執行換行
          echo rtrim($str, "@ @:)");    //去除字符串右邊的特殊字符“@_@:)”
        ?>

結果為:(:@_@展軟件開發雄風 @_@:)

(:@_@展軟件開發雄風

5.2.2 轉義、還原字符串數據

視頻講解:光盤\TM\lx\5\03 轉義、還原字符串數據.mp4

字符串轉義、還原的方法有兩種:一種是手動轉義、還原字符串數據,另一種是自動轉義、還原字符串數據。下面分別對這兩種方法進行詳細講解。

1.手動轉義、還原字符串數據

字符串可以用單引號(')、雙引號(")、定界符(<<<)3種方法定義,而指定一個簡單字符串的最簡單的方法是用單引號括起來。當使用字符串時,很可能在該串中存在這幾種符號與PHP腳本混淆的字符,因此必須要做轉義語句。這就要在它的前面使用轉義符號“\”。

“\”是一個轉義符,緊跟在“\”后面的第一個字符將變得沒有意義或有特殊意義。如“'”是用來定義字符串,但寫為“\'”時就失去了定義字符串的意義,變為普通的單引號。讀者可以通過“echo '\''; ”輸出一個單引號,同時轉義字符“\”不會顯示。

技巧

如果要在字符串中表示單引號,則需要用反斜線(\)進行轉義。例如,要表示字符串“I'm”,則需要寫成“I\'m”。

【例5.4】使用轉義字符“\”對字符串進行轉義,實例代碼如下:(實例位置:光盤\TM\sl\5\4)

        <?php
          echo'select*from tb_book where bookname=\'PHP5從入門到精通\'';
        ?>

結果為:select * from tb_book where bookname = 'PHP5從入門到精通’

技巧

對于簡單的字符串建議采用手動方法進行字符串轉義,而對于數據量較大的字符串,建議采用自動轉義函數實現字符串的轉義。

2.自動轉義、還原字符串數據

自動轉義、還原字符串數據可以應用PHP提供的addslashes()函數和stripslashes()函數實現。

addslashes()函數

addslashes()函數的作用是使用反斜線引用字符串。

語法格式如下:

        string addslashes ( string str)

其中,str為要轉義的字符串。

返回值:返回轉義后的字符。

返回字符串中,為了數據庫查詢語句等的需要在某些字符前加上了反斜線。這些字符是單引號(')、雙引號(")、反斜線(\)與NUL(NULL字符)。

stripslashes()函數

stripslashes()函數的作用是反引用一個引用字符串。

語法格式如下:

        string stripslashes(string str);

其中,str為輸入字符串。

返回值:返回一個去除轉義反斜線后的字符串(“\'”轉換為“'”等)。雙反斜線(\\)被轉換為單個反斜線(\)。

【例5.5】使用自動轉義字符addslashes()函數對字符串進行轉義,然后使用stripslashes()函數進行還原,實例代碼如下:(實例位置:光盤\TM\sl\5\5)

        <?php
         $str = "select * from tb_book where bookname = 'PHP5從入門到精通’";
         echo$str."<br>";                              //輸出字符串
         $a=addslashes($str);                         //對字符串中的特殊字符進行轉義
         echo$a."<br>";                                //輸出轉義后的字符
         $b=stripslashes($a);                        //對轉義后的字符進行還原
         echo$b."<br>";                                //將字符原義輸出
        ?>

運行結果如圖5.1所示。

圖5.1 對字符串進行轉義和還原

技巧

所有數據在插入數據庫之前,有必要應用addslashes()函數進行字符串轉義,以免特殊字符未經轉義在插入數據庫時出現錯誤。另外,對于使用addslashes()函數實現的自動轉義字符串可以使用stripslashes()函數進行還原,但數據在插入數據庫之前必須再次進行轉義。

以上兩個函數實現了對指定字符串進行自動轉義和還原。除了上面介紹的方法外,還可以對要轉義、還原的字符串進行一定范圍的限制,通過使用addcslashes()函數和stripcslashes()函數實現對指定范圍內的字符串進行自動轉義、還原。下面分別對這兩個函數進行詳細介紹。

addcslashes()函數

實現轉義字符串中的字符,即在指定的字符charlist前加上反斜線。

語法格式如下:

        string addcslashes (string str, string charlist)

其中,str為將要被操作的字符串;charlist指定在字符串中的哪些字符前加上反斜線,如果參數charlist中包含\n、\r等字符,將以C語言風格轉換,而其他非字母數字且ASCII碼低于32以及高于126的字符均轉換成八進制表示。

注意

在定義參數charlist的范圍時,需要明確在開始和結束的范圍內的字符。

stripcslashes()函數

stripcslashes()函數用來將應用addcslashes()函數轉義的字符串str還原。

語法格式如下:

        string stripcslashes (string str)

【例5.6】使用addcslashes()函數對字符串“編程詞典網”進行轉義,使用stripcslashes()函數對轉義的字符串進行還原,實例代碼如下:(實例位置:光盤\TM\sl\5\6)

        <?php
          $a="編程詞典網";                                 //對指定范圍內的字符進行轉義
          echo$a;                                          //輸出指定的字符串
          echo"<br>";                                      //執行換行
          $b=addcslashes($a, "編程詞典網");              //轉義指定的字符串
          echo$b;                                          //輸出轉義后的字符串
          echo"<br>";                                      //執行換行
          $c=stripcslashes($b);                          //對轉義的字符串進行還原
          echo$c;                                          //輸出還原后的轉義字符串
        ?> 

結果為:編程詞典網

\261\340\263\314\264\312\265\344\315\370

編程詞典網

技巧

在緩存文件中,一般對緩存數據的值采用addcslashes()函數進行指定范圍的轉義。

5.2.3 獲取字符串的長度

視頻講解:光盤\TM\lx\5\04 獲取字符串的長度.mp4

獲取字符串的長度使用的是strlen()函數,下面重點講解該函數的語法及其應用。

strlen()函數主要用于獲取指定字符串str的長度。

語法格式如下:

        int strlen(string str)

【例5.7】使用strlen()函數來獲取指定字符串的長度,實例代碼如下:(實例位置:光盤\TM\sl\5\7)

        <?php
            echo strlen("編程詞典網:www.mrbccd.com");          //輸出指定字符串的長度
        ?>

結果為:25

說明

漢字占兩個字符,數字、英文、小數點、下劃線和空格占一個字符。

strlen()函數在獲取字符串長度的同時,也可以用來檢測字符串的長度。

【例5.8】使用strlen()函數對提交的用戶密碼的長度進行檢測,如果其長度小于6,則彈出提示信息。(實例位置:光盤\TM\sl\5\8)

具體開發步驟如下:

(1)利用開發工具(如Dreamweaver)新建一個PHP動態頁,并將其保存為index.php。

(2)添加一個表單,將表單的action屬性設置為index_ok.php。

(3)應用HTML標記設計頁面,添加一個“用戶名”文本框,命名為user;添加一個“密碼”文本框,命名為pwd;添加一個圖像域,指定源文件位置為images/btn_dl.jpg。

(4)新建一個PHP動態頁,保存為index_ok.php,其代碼如下:

        <?php
        if(strlen($ POST['pwd'])<6){                  //檢測用戶密碼的長度是否小于6
            echo "<script>alert(’用戶密碼的長度不得少于6位!請重新輸入’); history.back(); </script>";
        }
        else{
            echo"用戶信息輸入合法!";                      //用戶密碼超過6位,則彈出該提示信息
        }
        ?>

在上面的代碼中,通過POST方法(關于POST方法將在后面的章節中進行詳細講解)接收用戶輸入的用戶密碼字符串的值。通過strlen()函數來獲取用戶密碼的長度,并使用if條件語句對用戶密碼長度進行判斷,如果用戶輸入的密碼沒有達到這個長度,就會彈出提示信息。

(5)在IE瀏覽器中輸入地址,按Enter鍵,運行結果如圖5.2所示。

圖5.2 使用strlen()函數檢測字符串的長度

5.2.4 截取字符串

視頻講解:光盤\TM\lx\5\05 截取字符串.mp4

在PHP中有一項非常重要的技術,就是截取指定字符串中指定長度的字符。PHP對字符串截取可以采用預定義函數substr()實現。本節重點介紹字符串的截取技術。

語法格式如下:

        string substr ( string str, int start [, int length])

substr()函數的參數說明如表5.2所示。

表5.2 substr()函數的參數說明

注意

substr()函數中參數start的指定位置是從0開始計算的,即字符串中的第一個字符表示為0。

【例5.9】使用substr()函數截取字符串中指定長度的字符,實例代碼如下:(實例位置:光盤\TM\sl\5\9)

        <?php
          echo substr("She is a well-read girl",0);            //從第1個字符開始截取
          echo"<br>";                                           //執行換行
          echo substr("She is a well-read girl",4,14);         //從第5個字符開始連續截取14個字符
          echo"<br>";                                           //執行換行
          echo substr("She is a well-read girl", -4,4);        //從倒數第4個字符開始截取4個字符
          echo"<br>";                                           //執行換行
          echo substr("She is a well-read girl",0, -4);        //從第1個字符開始截取,截取到倒數第4個字符
        ?>

結果為:She is a well-read girl

is a well-read

girl

She is a well-read

在開發Web程序時,為了保持整個頁面的合理布局,經常需要對一些超長文本進行部分顯示。下面通過具體的實例講解其實現方法。

【例5.10】使用substr()函數截取超長文本的部分字符串,剩余的部分用“…”代替,實例代碼如下:(實例位置:光盤\TM\sl\5\10)

        <?php
          $text="祝全國程序開發人員在編程之路上一帆風順二龍騰飛三陽開泰四季平安五福臨門六六大順七星高照
          八方來財九九同心十全十美百事可樂千事順心萬事吉祥PHP編程一級棒";
          if(strlen($text)>30){                               //如果文本的字符串長度大于30
              echo substr($text,0,30)."";                  //輸出文本的前30個字節,然后輸出省略號
          }
          else{                                               //如果文本的字符串長度小于30
              echo$text;                                      //直接輸出文本
          }
        ?>

結果為:祝全國程序開發人員在編程之路上…

技巧

從指定的字符串中按照指定的位置截取一定長度的字符。通過substr()函數可以獲取某個固定格式字符串中的一部分。

5.2.5 比較字符串

視頻講解:光盤\TM\lx\5\06 比較字符串.mp4

在PHP中,對字符串之間進行比較的方法主要有3種,第一種是使用strcmp()函數按照字節進行比較,第二種是使用strnatcmp()函數按照自然排序法進行比較,第三種是使用strncmp()函數指定從源字符串的位置開始比較。下面分別對這3種方法進行詳細講解。

1.按字節進行字符串的比較

按字節進行字符串比較的方法有兩種,分別是strcmp()和strcasecmp()函數,通過這兩個函數即可實現對字符串進行按字節的比較。這兩種函數的區別是strcmp()函數區分字符的大小寫,而strcasecmp()函數不區分字符的大小寫。由于這兩個函數的實現方法基本相同,這里只介紹strcmp()函數。

strcmp()函數用來對兩個字符串進行比較。

語法格式如下:

        int strcmp ( string str1, string str2)

其中,str1和str2指定要比較的兩個字符串。如果str1和str2相等,則返回0;如果str1大于str2,則返回值大于0;如果str1小于str2,則返回值小于0。

注意

strcmp()函數區分字母大小寫。

【例5.11】使用strcmp()函數和strcasecmp()函數分別對兩個字符串按字節進行比較,實例代碼如下:(實例位置:光盤\TM\sl\5\11)

        <?php
            $str1="明日編程詞典!";                    //定義字符串常量
            $str2="明日編程詞典!";                    //定義字符串常量
            $str3="mrsoft";                            //定義字符串常量
            $str4="MRSOFT";                            //定義字符串常量
            echo strcmp($str1, $str2);                //這兩個字符串相等
            echo strcmp($str3, $str4);                //注意該函數區分大小寫
            echo strcasecmp($str3, $str4);           //該函數不區分字母大小寫
        ?>

結果為:010

技巧

在PHP中,對字符串之間進行比較的應用也是非常廣泛的。例如,使用strcmp()函數比較在用戶登錄系統中輸入的用戶名和密碼是否正確。如果在驗證用戶名和密碼時不使用此函數,那么輸入的用戶名和密碼無論是大寫還是小寫,只要正確即可登錄。使用strcmp()函數可避免這種情況,即使正確,也必須大小寫匹配才可以登錄,從而提高了網站的安全性。

2.按自然排序法進行字符串的比較

在PHP中,按照自然排序法進行字符串的比較是通過strnatcmp()函數來實現的。將字符串中的字符按照從左到右的順序進行比較。如果是數字與數字比較,則按照自然排序法,其他情況則根據字符的ASCII碼值進行比較。

語法格式如下:

        int strnatcmp ( string str1, string str2)

如果字符串str1和str2相等,則返回0;如果str1大于str2,則返回值大于0;如果str1小于str2,則返回值小于0。Strnatcmp()函數區分字母大小寫。

注意

在自然運算法則中,2比10小,而在計算機序列中,10比2小,因為“10”中的第一個數字是“1”,它小于2。

【例5.12】使用strnatcmp()函數按自然排序法進行字符串的比較,實例代碼如下:(實例位置:光盤\TM\sl\5\12)

        <?php
            $str1="str2.jpg";                             //定義字符串常量
            $str2="str10.jpg";                            //定義字符串常量
            $str3="mrsoft1";                              //定義字符串常量
            $str4="MRSOFT2";                              //定義字符串常量
            echo strcmp($str1, $str2);                   //按字節進行比較,返回1
            echo " ";
          echo strcmp($str3, $str4);                     //按字節進行比較,返回1
          echo " ";
          echo strnatcmp($str1, $str2);                  //按自然排序法進行比較,返回-1
          echo " ";
          echo strnatcmp($str3, $str4);                  //按自然排序法進行比較,返回1
        ?>

結果為:1 1 -1 1

說明

按照自然運算法進行比較,還可以使用另一個與strnatcmp()函數作用相同,但不區分大小寫的strnatcasecmp()函數。

3.指定從源字符串的位置開始比較

strncmp()函數用來比較字符串中的前n個字符。

語法格式如下:

        int strncmp(string str1, string str2, int len)

如果字符串str1和str2相等,則返回0;如果str1大于str2,則返回值大于0;如果str1小于str2,則返回值小于0。Strncmp()函數區分字母大小寫。

strncmp()函數的參數說明如表5.3所示。

表5.3 strncmp()函數的參數說明

【例5.13】使用strncmp()函數比較字符串的前兩個字符是否與源字符串相等,實例代碼如下:(實例位置:光盤\TM\sl\5\13)

        <?php
            $str1="I like PHP! ";                             //定義字符串常量
            $str2="i am fine! ";                              //定義字符串常量
            echo strncmp($str1, $str2,2);                    //比較前兩個字符
        ?>

結果為:-1

從上面的代碼中可以看出,由于變量$str2中的字符串的首字母為小寫,與變量$str1中的字符串不匹配,因此比較后的字符串返回值為-1。

5.2.6 檢索字符串

視頻講解:光盤\TM\lx\5\07 檢索字符串.mp4

在PHP中,提供了很多應用于字符串查找的函數,可以像Word那樣實現對字符串的查找功能。下面講解常用的字符串檢索技術。

1.使用strstr()函數查找指定的關鍵字

strstr()函數用于獲取一個指定字符串在另一個字符串中首次出現的位置到后者末尾的子字符串。如果執行成功,則返回剩余字符串(存在相匹配的字符);如果沒有找到相匹配的字符,則返回false。

語法格式如下:

        string strstr ( string haystack, string needle)

strstr()函數的參數說明如表5.4所示。

表5.4 strstr()函數的參數說明

注意

strstr()函數區分字母的大小寫。

【例5.14】使用strstr()函數獲取上傳圖片的后綴,限制上傳圖片的格式。實例代碼如下:(實例位置:光盤\TM\sl\5\14)

        <form method="post" action="index.php" enctype="multipart/form-data">
            <input type="hidden" name="action" value="upload" />
            <input type="file" name="u_file"/>
            <input type="submit" value="上傳" />
        </form>
        <?php
            if(isset($_POST['action'])&&$_POST['action']=="upload"){           //判斷提交按鈕是否為空
            $file_path="./uploads\\";                    //定義圖片在服務器中的存儲位置
            $picture_name=$_FILES['u_file']['name'];     //獲取上傳圖片的名稱
            $picture_name=strstr($picture_name, ".");    //通過strstr()函數截取上傳圖片的后綴
            if($picture_name! =".jpg"){                  //根據后綴判斷上傳圖片的格式是否符合要求
            echo "<script>alert(’上傳圖片格式不正確,請重新上傳’); window.location.href='index.php'; </script>";
            }else if($_FILES['u_file']['tmp_name']){
                move_uploaded_file($_FILES['u_file']['tmp_name'], $file_path.$_FILES['u_file']['name']); //執行圖片上傳
            echo "圖片上傳成功!";
            }
            else
            echo "上傳圖片失敗";
            }
        ?>

運行結果如圖5.3所示。

圖5.3 應用strstr()函數檢索上傳圖片的后綴

注意

strrchr()函數與其正好相反,該函數是從字符串后序的位置開始檢索子串(子字符串)的。

2.使用substr_count()函數檢索子串出現的次數

substr_count()函數用于獲取指定字符在字符串中出現的次數。

語法格式如下:

        int substr_count(string haystack, string needle)

其中,haystack是指定的字符串,needle為指定的字符。

【例5.15】使用substr_count()函數獲取子串在字符串中出現的次數,實例代碼如下:(實例位置:光盤\TM\sl\5\15)

        <?php
            $str="明日編程詞典";                             //定義字符串常量
            echo substr count($str, "詞");                 //輸出查詢的字符串
        ?>

結果為:1

注意

檢索子串出現的次數一般常用于搜索引擎中,針對子串在字符串中出現的次數進行統計,便于用戶第一時間掌握子串在字符串中出現的次數。

5.2.7 替換字符串

視頻講解:光盤\TM\lx\5\08 替換字符串.mp4

通過字符串的替換技術可以實現對指定字符串中的指定字符進行替換。字符串的替換技術可以通過以下兩個函數實現:str_ireplace()函數和substr_replace()函數。

1.str_ireplace()函數

使用新的子字符串(子串)替換原始字符串中被指定要替換的字符串。

語法格式如下:

        mixed str ireplace ( mixed search, mixed replace, mixed subject [, int &count])

將所有在參數subject中出現的參數search以參數replace取代,參數&count表示取代字符串執行的次數。str_ireplace()函數區分大小寫。

str_ireplace()函數的參數說明如表5.5所示。

表5.5 str_ireplace()函數的參數說明

【例5.16】將文本中的指定字符串“某某”替換為“**”,并且輸出替換后的結果,實例代碼如下:(實例位置:光盤\TM\sl\5\16)

        <?php
            $str2="某某";                                     //定義字符串常量
            $str1="**";                                     //定義字符串常量
            $str="   某某公司是一家以計算機軟件技術為核心的高科技企業,多年來始終致力于行業管理軟件開發、
                  數字化出版物制作、計算機網絡系統綜合應用以及行業電子商務網站開發等領域,涉及生產、管理、
                  控制、倉儲、物流、營銷、服務等行業";        //定義字符串常量
            echo str ireplace($str2, $str1, $str);          //輸出替換后的字符串
        ?>

結果為:

**公司是一家以計算機軟件技術為核心的高科技企業,多年來始終致力于行業管理軟件開發、數字化出版物制作、計算機網絡系統綜合應用以及行業電子商務網站開發等領域,涉及生產、管理、控制、倉儲、物流、營銷、服務等行業

注意

str_treplace()函數在執行替換的操作時不區分大小寫,如果需要對大小寫加以區分,可以使用str_replace()函數。

字符串替換技術最常用的就是在搜索引擎的關鍵字處理中,可以使用字符串替換技術將搜索到的字符串中的關鍵字替換顏色,如查詢關鍵字描紅功能,使搜索到的結果更便于用戶查看。

注意

查詢關鍵字描紅是指將查詢關鍵字以特殊的顏色、字號或字體進行標識。這樣可以使瀏覽者快速檢索到所需的關鍵字,方便瀏覽者從搜索結果中查找所需內容。查詢關鍵字描紅適用于模糊查詢。

下面通過具體的實例介紹如何實現查詢關鍵字描紅功能。

【例5.17】使用str_ireplace()函數替換查詢關鍵字,當顯示所查詢的相關信息時,將輸出的關鍵字的字體替換為紅色。實例代碼如下:(實例位置:光盤\TM\sl\5\17)

        <?php
            $content="白領女子公寓,溫馨街南行200米,交通便利,親情化專人管理,您的理想選擇!";
            $str="女子公寓";                                                                //定義查詢的字符串常量
            echo str ireplace($str, "<font color='#FF0000'>".$str."</font>", $content); //替換字符串為紅色字體
        ?>

運行結果如圖5.4所示。

圖5.4 應用str_ireplace()函數對查詢關鍵字描紅

注意

查詢關鍵字描紅功能在搜索引擎中被廣泛應用,希望讀者通過本例的學習,能夠舉一反三,從而開發出更加靈活、便捷的程序。

2.substr_replace()函數

substr_replace()函數用于對指定字符串中的部分字符串進行替換。

語法格式如下:

        mixed substr replace(mixed string, mixed repl, mixed start, [mixed length])

substr_replace()函數的參數說明如表5.6所示。

表5.6 substr_replace()函數的參數說明

注意

如果參數start設置為負數,而參數length數值小于或等于start數值,那么length的值自動為0。

【例5.18】使用substr_replace()函數對指定字符串進行替換,實例代碼如下:(實例位置:光盤\TM\sl\5\18)

        <?php
            $str="用今日的辛勤工作,換明日的雙倍回報!";        //定義字符串常量
            $replace="百倍";                                    //定義要替換的字符串
            echo substr replace($str, $replace,26,4);         //替換字符串
        ?>

結果為:用今日的辛勤工作,換明日的百倍回報!

在上面的代碼中,主要使用substr_replace()函數實現將字符串“雙倍”替換為字符串“百倍”。

5.2.8 格式化字符串

視頻講解:光盤\TM\lx\5\09 格式化字符串.mp4

在PHP中,字符串的格式化方式有多種,按照格式化的類型可以分為字符串的格式化和數字的格式化,數字的格式化最為常用,本節將重點講解數字格式化函數number_format()。

number_format()函數用來將數字字符串格式化。

語法格式如下:

        string number_format(float number[, int decimals [, string dec_point[, string thousands_ sep]]])

其中,number為要格式化的數字,decimals為要保留的小數位數,dec_ point為指定小數點顯示的字符,thousands_sep為指定千位分隔符顯示的字符。

number_format()函數可以有1個、2個或是4個參數,但不能是3個參數。如果只有1個參數number, number的小數部分會被去掉,并且每個千位分隔符都是用英文小寫逗號“, ”來隔開;如果有2個參數,number將保留小數點后的位數到設定的值,且每一千就會以逗號來隔開;如果有4個參數,number將保留decimals個長度的小數部分,小數點被替換為dec_point,千位分隔符替換為thousands_sep。

【例5.19】使用number_format()函數對指定的數字字符串進行格式化處理,實例代碼如下:(實例位置:光盤\TM\sl\5\19)

        <?php
            $number=1868.96;                                  //定義數字字符串常量
            echo number format($number);                    //輸出格式化后的數字字符串
            echo"<br>";                                       //執行換行
            echo number format($number,2);                  //輸出格式化后的數字字符串
            echo"<br>";                                       //執行換行
            $number2=11886655.760055;                         //定義數字字符串常量
            echo number format($number2,2, '.', '.');       //輸出格式化后的數字字符串
        ?>

結果為:1,869

1,868.96

11.886.655.76

5.2.9 分割、合成字符串

視頻講解:光盤\TM\lx\5\10 分割、合成字符串.mp4

1.分割字符串

字符串的分割是通過explode()函數實現的。explode()函數按照指定的規則對一個字符串進行分割,返回值為數組。

語法格式如下:

        array explode(string delimiter, string str[, int limit])

explode()函數的參數說明如表5.7所示。

表5.7 explode()函數的參數說明

【例5.20】使用explode()函數實現字符串分割,實例代碼如下:(實例位置:光盤\TM\sl\5\20)

        <?php
            $str="PHP編程詞典@NET編程詞典@ASP編程詞典@JSP編程詞典";   //定義字符串常量
            $str_arr=explode("@", $str);                             //應用標識“@”分割字符串
            print r($str_arr);                                       //輸出字符串分割后的結果
        ?>

從上面的代碼中可以看出,在分割字符$str時,以“@”作為分割的標識符進行拆分,分割成4個數組元素,最后使用print_r()輸出函數輸出數組中的元素。

運行結果如圖5.5所示。

圖5.5 使用explode()函數實現字符串分割

注意

在默認情況下,數組的第一個元素的索引為0。關于數組的相關知識將在后續的章節中進行詳細講解。

輸出數組元素除了使用print_r()函數外,還可以使用echo語句進行輸出,兩者的區別是,print_r()函數輸出的是一個數組列,而使用echo語句輸出的是數組中的元素。將“print_r($str_arr); ”使用如下代碼替換即可輸出數組中的元素。

        echo$str_arr[0];                                    //輸出數組中的第1個元素
        echo$str_arr[1];                                    //輸出數組中的第2個元素
        echo$str_arr[2];                                    //輸出數組中的第3個元素
        echo$str_arr[3];                                    //輸出數組中的第4個元素

結果為:PHP編程詞典NET編程詞典ASP編程詞典JSP編程詞典

說明

以上兩種輸出分割字符串的方法在運行結果的表現形式上會稍有不同。

2.合成字符串

implode()函數可以將數組的內容組合成一個新字符串。

語法格式如下:

        string implode(string glue, array pieces)

其中,glue是字符串類型,指定分隔符;pieces是數組類型,指定要被合并的數組。

【例5.21】應用implode()函數將數組中的內容以“@”為分隔符進行連接,從而組合成一個新的字符串,實例代碼如下:(實例位置:光盤\TM\sl\5\21)

        <?php
            $str="PHP編程詞典@NET編程詞典@ASP編程詞典@JSP編程詞典";   //定義字符串常量
            $str_arr=explode("@", $str);                              //應用標識“@”分割字符串
            $array=implode("@", $str_arr);                            //將數組合成字符串
            echo$array;                                               //輸出字符串
        ?>

結果為:PHP編程詞典@NET編程詞典@ASP編程詞典@JSP編程詞典

說明

implode()函數和explode()函數是兩個相對的函數,一個用于合成,另一個用于分割。

主站蜘蛛池模板: 原平市| 宣威市| 九寨沟县| 蒙自县| 板桥市| 水富县| 怀柔区| 内丘县| 香河县| 富锦市| 诸城市| 新田县| 安西县| 墨脱县| 宁强县| 临澧县| 哈巴河县| 洪江市| 张家口市| 雷州市| 平谷区| 五寨县| 威海市| 涿鹿县| 蓬安县| 晋城| 淮阳县| 楚雄市| 西乌珠穆沁旗| 榆社县| 奉新县| 连南| 尚志市| 兰坪| 监利县| 广德县| 白银市| 绥中县| 如皋市| 湖口县| 济南市|