字符串相關處理函數

1.單引號和多引號的區別php

  (1)單引號:在單引號引發來的字符串中不能再包含單引號,即單引號不能嵌套使用。若是有必要在單引號中表示一個單引號的話,須要用反斜線(\)轉義。另外,單引號字符串中出現的變量不會被變量的值替代。html

  echo 'this \n is \r a \t simple string \\';    //只能講最後的反斜槓轉義輸出一個反斜槓,其餘的轉義都是無效的,會原樣輸出mysql

  

  $str  = 100;linux

  echo 'this is a simple $str string';      //會將變量$stri原樣輸出,並不會在單引號中解析這個變量算法

  在定義簡單字符串時,使用單引號效率會更高。sql

  (2)雙引號:轉移字符「\」與其餘字符合起來表示一個特殊字符,一般是一些非打印字符(如:\n),若是視圖轉義其餘字符,反斜線自己也會被顯示出來。另外,雙引號字符串中出現的變量會被變量值替代,便可以解析雙引號中的變量。數據庫

  $beer = 'Heineken';apache

  echo "$beer's taste is great";    //能夠將變量$beer解析,由於(')在變量名中是無效的.瀏覽器

  echo "He drank some $beers";   //不能夠解析變量$beers,由於「s」在變量名中是有效的,沒有$beers這個變量函數

  echo "He drank some ${beer}s";  //使用{}包含起來,就能夠將變量分離出來解析了

  echo "He drank some {$beer}s";  //能夠將變量解析,{}的另外一種用法

2.經常使用的字符串輸出函數  

  2.1 echo()

    該函數用於輸出一個或多個字符串,echo()實際上不是一個函數(它是個語言結構),所以無須對其使用括號。若是向echo()傳遞一個或多個參數時,不能使用括號。

    $str = "What's LAMP?";

    echo $str;      //直接輸出字符串變量不能加括號

    echo 'This','string','was','made','width multiple parameters<br>';     //能夠輸出用逗號隔開的多個參數

  2.2 printf()

    該函數的功能和echo()的同樣,它有返回值,若成功返回1,失敗則返回0.但它的執行效率沒有echo()函數高

  2.3 die()

    該函數是exit()函數的別名。若是參數是一個字符串,則該函數會在退出前輸出它。若是參數是一個整數,這個值會被用做退出狀態。退出狀態的值在0至254之間。退出狀態255由PHP保留,不會被使用。狀態0用於成功地終止程序。

    $url = "http://www.brophp.net";

    fopen($url,"r") or die("Unable to connect to $url");      //若是打開失敗則輸出一條消息並退出程序

  2.4 printf()

    格式:printf(format,arg1,arg2....argn)

    該函數用於輸出格式化的字符串,第一個參數爲必選項,是規定的字符串及如何格式其中的變量。還能夠有多個可選參數,是規定插到第一個參數的格式化字符串對應%符號處的參數。第一個參數中使用的轉換格式,是以百分比符號("%")開始到轉換字符結束(如:%d,表示帶符號的十進制數,語法同C語言)。後面的多個參數將插入到主字符串中的百分號(%)符號處。該函數是逐步執行的。在第一個%符號中插入arg1,在第二個%符號處插入arg2,以此類推。若是%符號多於arg參數,則必須使用佔位符。佔位符被插入到%符號以後,有數字和"\$"組成。

    $str = "LAMP";

    $num = 798;

    printf("%s book.page number %u <br>",$str,$num);    //將字符串$str在第一個參數中的%出輸出,按%s的字符串輸出,整型$num按%u輸出

  2.5 sprintf()

    該函數的用法和prinf()類似,但它並非輸出字符串,而是把格式化的字符串以返回值的形式寫入到一個變量中。這樣就能夠在須要時使用格式化後的字符串。

    $num = 12345;

    $text = sprintf("%0.2f",$num);

    echo $text;          //12345.00

3.經常使用的字符串格式化函數

  3.1 去除空格和字符串填補函數

    3.1.1 ltrim()、rtrim(),trim()

      格式:string ltrim(string str[,string charlist])      

         string rtrim(string str[,string charlist])

         string trim(string str[,string charlist])

      這三個函數分別用於從字符串的左、右和兩端刪除空白字符或其餘預約義字符。處理後的結果都會以新字符串的形式返回,不會在原字符串上修改。其中第一個參數str是待處理的字符串,爲必選項。第二個參數charlist是過濾字符串,用於指定但願去除的特殊符號,該參數爲可選。若是不指定過濾字符串,默認狀況下會去掉下列字符。

    * "":空格

    * "\0":NULL

    * "\t":製表符

    * "\n":換行符

    * "\r":回車

    此外還可使用".."符號指定須要去除的一個範圍,例如"0..9"或"a..z"表示去掉ASCII碼值中的數字和小寫字母。

    $str = "   lamp  ";    //聲明一個字符串,其中左側有三個空格,右側有兩個空格,總長度爲9個字符

    echo strlen($str);      //9

    echo strlen(ltrim($str));   //6

    echo strlen(rtrim($str));  //7

    echo strlen(trim($str));  //4

 

    $str = "123 This is a test ...";

    echo ltrim($str,"0..9");    //輸出: This is a test ...

    echo rtrim($str,".");      //輸出:123 This is a test

    echo trim($str,"0..9 A..z .");  //輸出: his is a test

    3.1.2 str_pad()

      原型:string str_pad(string input ,int pad_length[,string pad_string[,int pad_type]])

      該函數用於按需求對字符串進行填補。該函數有4個參數,第一個參數是必選項,指名要處理的字符串。第二個參數也是必選項,給定處理後字符串的長度,若是該值小於原始字符串的長度,則不進行任何操做。第三個參數指定填補時所用的字符串,它爲可選參數,若是沒有指定則默認使用空格填補。最後一個參數指定填補的方向,它有三個可選值:STR_PAD_BOTH、STR_PAD_LEFT和STR_PAD_RIGHT,分別表明在字符串兩端、左和右進行填補。也是一個可選參數,若是沒有指定,則默認值是STR_PAD_RIGHT.

      $str = "LAMP";

      echo str_pad($str,10);    //輸出:LAMP      長度爲10,默認使用空格在右邊填補"LAMP"

      echo str_pad($str,10,"-=",STR_PAD_LEFT);  //輸出:-=-=-=LAMP

      echo str_pad($str,10,"_",STR_PAD_BOTH);  //輸出:___LAMP___

      echo str_pad($str,6,"___");          //輸出:LAMP__

  3.2 字符串大小寫的轉換

    例句:$lamp = "lamp is composed of Linux、Apace、MySQL and PHP";

    3.2.1 strtoupper()

      該函數用於將給定的字符串所有轉換爲大寫字母,只有一個參數

      echo strtoupper($lamp);    //輸出:LAMP IS COMPOSED OF LINUX、APACHE、MYSQL AND PHP

    3.2.2 strtolower()

      該函數用於將給定的字符串所有轉換爲小寫字母,只有一個參數

      echo strtolower($lamp);    //輸出:lamp is composed of linux、apache、mysql and php

    3.2.3 ucfirst()

      該函數用於將給定的字符串的首字母轉換爲大寫,其他字母不變,只有一個參數

      echo ucfirst($lamp);    //輸出:Lamp is composed of Linux、Apache、 MySQL and PHP

    3.2.4 ucwords()

      該函數用於將給定的字符串中所有以空格分隔的單詞首字母轉換爲大寫,只有一個參數

      echo ucwords($lamp);  //輸出:Lamp Is Composed Of Linux、Apache、MySQL And PHP

  3.3和HTML標籤相關的字符串格式化

    3.3.1 nl2br()

      該函數在字符串中的每一個新行"\n"以前插入HTML換行符"<br/>".

      echo nl2br("One line.\nAnother line.");

      //輸出:One line

          Another line

    3.3.2 htmlspecialchars()

      原型:string htmlspecialchars(string string[,int quote_style[,string charset]])

      該函數能夠將一些預約義的字符轉換爲HTML實體。此函數用在預防使用者提供的文字中包含了HTML的標記。如下是該函數能夠轉換的字符:

      * 「 & 」(和號)轉換爲"&amp;".

      *  「 " 」(雙引號)轉化爲"&quot;"。

      *  「 ‘ 」(單引號)轉換爲"&#039;"。

      * 「 < 」(小於)轉換爲"&lt;"。

      * 「 > 」(大於)轉換爲"&gt;".

      該函數中第一個參數是帶有HTML標記待處理的字符串,爲必選項。第二個參數爲可選參數,用來決定引號的轉換方式。默認值爲ENT_COMPAT將只轉換 雙引號,而保留單引號;ENT_QUOTES將同時轉換這兩種引號;而ENT_NOQUOTES將不對引號進行轉換。第三個參數也是可選的值,用於指定所 處理字符串的字符集,默認的字符集是「ISO88511-1」。還有其餘可用的合法字符集(如:UTF--8等)。若是沒法被識別的字符集將被忽略,並由 默認的字符集ISO-88511-1代替。

      $str = "<B>WebServer:</B> & 'Linux' & 'Apache'";
      echo htmlspecialchars($str,ENT_COMPAT)."<br>";
      echo htmlspecialchars($str,ENT_QUOTES)."<br>";
      echo htmlspecialchars($str,ENT_NOQUOTES);

      在瀏覽器中的輸出結果:

        <B>WebServer:</B> & 'Linux' & 'Apache'
        <B>WebServer:</B> & 'Linux' & 'Apache'
        <B>WebServer:</B> & 'Linux' & 'Apache'

      若是在瀏覽器中查看源代碼,會看到以下結果:

        &lt;B&gt;WebServer:&lt;/B&gt; &amp; 'Linux' &amp; 'Apache'<br>

        &lt;B&gt;WebServer:&lt;/B&gt; &amp; &#039;Linux&#039; &amp; &#039;Apache&#039;<br>

        &lt;B&gt;WebServer:&lt;/B&gt; &amp; 'Linux' &amp; 'Apache'

      3.3.3 htmlentities()

        該函數將全部的非ASCII碼字符轉換爲對應的實體代碼。該函數與htmlspecialchars()函數的使用語法格式一致,但該函數能夠轉義更多的HTML字符。

      3.3.4 stripslashes()

        在處理表單中提交的數據時,不只要經過前面介紹的函數將HTML的標記符號和一些特殊字符轉換爲HTML實體,還須要對引號進行處理。由於被提交的表單數據中的「 ' 」、「 " 」和「 \ 」等字符前將被自動加上一個斜線"\"。這是因爲PHP配置文件php.ini中的選項magic_quotes_gpc在起做用,默認是打開的,若是不關閉它則要使用函數stripslashes()刪除反斜線。若是不處理,將數據保存到數據庫中時,有可能會被數據庫誤當成控制符而引發錯誤。函數stripslashes()只有一個被處理的字符串做爲參數,返回處理後的字符串。一般使用 htmlspecialchars()函數與stripslashes()函數複合的方式,聯合處理表單中提交的數據。

  3.4 其餘字符串格式化函數

    3.4.1 strrev()

      該函數的做用是將輸入的字符串反轉,只提供一個要處理的字符串做爲參數,返回反轉後的字符串。

      echo strrev("http://www.baidu.net");  //輸出結果:ten.udiab.www//:ptth

    3.4.2 number_format()

      格式:string number_format(float number[,int decimals[,string dec_point,string thousands_sep]])

      該函數經過千位分組來格式化數字。該函數返回格式化後的數字,該函數支持一個、兩個或四個參數(不是三個)。第一個參數爲必選項,提供要被格式化的數字。若是未設置其餘參數,則數字會被格式化爲不帶小數點且以逗號(,)做爲分隔符的數字。第二個參數是可選項,規定使用多少個小數位。若是設置了該參數,則使用點號(.)做爲小數點來格式化數字。第三個參數也是可選的參數,規定用什麼字符串做爲小數點。第四個參數也是可選的,規定用作千位分隔符的字符串。若是設置了該參數,那麼全部其餘參數都是必需的。

      $number = 123456789

      echo number_format($number);    //輸出:123,456,789

      echo number_format($number,2)   //輸出:123,456,789.00

      echo number_format($number,2,",","."); //輸出:123.456.789,00

    3.4.3 md5()

      格式:string md5(string str[,bool raw_output])

      該函數是將一個字符串進行MD5算法加密,默認返回一個32位的十六進制字符串。其中第一個參數表示待處理的字符串,是必選項。第二個參數須要一個布爾類型數值,是可選項。默認值爲FALSE,返回一個32位的十六進制字符串。若是設置爲FALSE,將返回一個16位的二進制數。

      $password = "lampbrother";

      echo md5($password)."<br>";  //輸出:9d04ebc09335c41d27768c12c530ef41

      在PHP中提供了一個對文件進行MD5加密的函數md5_file(),使用的方式和md5()函數相似。

4.字符串比較函數

  4.1 按字節書序進行字符串比較

    4.1.1 strcmp()和strcasecmp()

      格式:int strcmp(string str1,string st2)

         int strcasecmp(string str1,string str2)

      這兩個函數都是按字節進行字符串的比較,其中函數strcasecmp()能夠忽略字符串中字母的大小進行比較。固然也能夠對中文等多字節字符進行比較。函數經過對輸入的str1和str2兩個字符串,按照字節的ASCII值從兩個字符串的首字節開始比較,若是相等則進入下一個字節的比較,直至結束比較。返回如下三個值之一:

        (1)若是str1等於str2則返回0.

        (2)若是str1大於str2則返回1.

        (3)若是str1小於str2則返回-1

      $userName = "Admin";

      echo strcmp($user,"admin");      //輸出:-1

      echo strcmp($user,"Admin");      //輸出:0

      echo strcasecmp($user,"admin");    //輸出:0

    4.2按天然順序進行字符串比較

      strnatcmp()

        該函數按天然順序比較兩個天然兩個字符串,該函數對大小寫敏感。其使用格式與strcmp()函數類似。

        $file1 = "file11.txt";

        $file2 = "file2.txt";

        echo strnatcmp($file1,$file2);    //輸出:1

相關文章
相關標籤/搜索