【PHP】最詳細PHP從入門到精通(三)——PHP中的字符串

轉載來自:https://www.cnblogs.com/liuyongqi/p/7078610.html

【字符串三種聲明方式】

1、"":雙引號中可以解析變量"{$a}",雙引號中可以使用任何轉義字符;
2、'':單引號中不可以解析變量,單引號中不可以使用轉義字符(但是可以使用單引號自身和轉義符自身--->\' \\);
3、定界符:<<<標識符
標識符;必須頂格寫,且整行不能有其他字符
定界符中可以使用變量,可以使用字符,也可以使用單雙引號

實例展示:

echo <<<str
這是定界符\n
聲明的字符串\n
Q的前端世界\n
str;

【各種輸出函數】

1、echo:直接將內容輸出。
    ①可以是函數用法echo() ,也可以是指令用法echo "";
    ②指令用法可以打印多個參數,用逗號分隔;echo "","","";
函數用法只能打印一個參數; echo ("");
2、print:基本與echo功能類似,但是
    ①總是有返回值1;
    ②無論函數寫法還是指令寫法,都只能傳一個參數;
3、print_r:打印數組和對象時,會用一定的格式顯示鍵和值的匹配;
    print_r打印數組時,把數組的指針移到最後邊。使用 reset() 可讓指針回到開始處。(不推薦!推薦var_dump)
4、var_dump:調試專用!!顯示打印的類型、值等信息,打印數組對象時,會縮進顯示鍵值匹配;
5、exit()和die():兩個函數完全別名關係,沒有任何區別!!
    輸出信息,並且結束當前腳本(可以不輸出信息)。
    exit、exit()、exit("")都合法;
6、printf:打印內容,並將變量進行格式化輸出;
    第一個參數:需要打印的字符串內容,可以帶多個佔位符;
    第二到多個參數:與佔位符一一對應的變量;
    作用:將後面的變量,按照佔位符的格式要求依次輸出;
    %% 返回百分比符號
    %b 二進制數
    %c 依照ASCII值的字符
    %d 帶符號十進制數
    %e 可續計數法(如1.5e3)
    %u 無符號十進制數
    %f或%F 浮點數
    浮點數默認保留6位小數(四捨五入);%和f之間可以插入數字表示精確度。數字的小數部分,表示保留幾位小數,四捨五入;數字的整數部分,表示精確的總寬度(整數+小數+小數點的總位數);如果設置的寬度<實際寬度,設置無效;如果如果設置的寬度>實際寬度,左邊空格補位。
補0需在%之後寬度之前加一個0(只能補0);
    %o 八進制數
    %s 字符串
    %x或%X 十六進制數
7、sprintf: 使用與printf一樣,只是不是輸出語句,而是將轉換後的結果賦給一個變量;
    eg:$str=sprintf("%.2f",1,23456)保留兩位小數,賦給str;

實例展示:

$num=10;
echo "123","456","789";
print("123");
printf("haha%bha",$num);

【PHP常用的字符串函數】

trim():刪除字符串兩端的空格;
ltrim():刪除字符串左邊的空格;
rtrim():刪除字符串右邊的空格;

可以傳入第二個參數,表示刪除兩邊的相關字符;
echo trim($str,"! ");-->只要字符串兩邊出現!和空格,都會刪除。
原理:從字符串兩邊開始,一次向內查找第二個參數中出現的字符,只要發現就刪除,直到遇到第一個沒有出現的字符爲止!!

第二個參數常寫爲: " \t\n\r\0\x0B",用於把空格和相關符號都刪掉;

" " (ASCII 32 (0x20)),普通空格符。 
◦ "\t" (ASCII 9 (0x09)),製表符。 
◦ "\n" (ASCII 10 (0x0A)),換行符。 
◦ "\r" (ASCII 13 (0x0D)),回車符。 
◦ "\0" (ASCII 0 (0x00)),空字節符。 
◦ "\x0B" (ASCII 11 (0x0B)),垂直製表符。

實例展示:

$str=" 這 是 空 格 ! ";
echo ltrim($str)."\n";
echo rtrim($str)."\n";
echo trim($str,"! ")."\n";
echo trim($str,"! 格")."\n";
echo trim($str," \t\n\r\0\x0B")."\n";

str_pad():將字符串用指定字符,填充到指定長度;
①需要填充的字符串;必選。
②需要字符串填充到多長。必選。
如果長度<=輸入字符串,則不起作用;
③需要填充的文本;可選;
默認空格填充。
④在字符串哪邊填充:STR_PAD_LEFT/STR_PAD_RIGHT/STR_PAD_BOTH(2,0,1);
默認在右邊填充。如果選BOTH,從兩邊填。

實例展示:

$str="abcde";
echo str_pad($str, 11,"123",STR_PAD_BOTH);

strtolower():將所有字母轉成小寫;
strtoupper():將所有字母轉成大寫;
上述兩個常用於不區分大小寫對比!

ucfirst():將字符串首字母轉成大寫;
ucwords():將每個單詞的首字母轉成大寫(空格分隔單詞);

後兩個只負責轉首字母,並不管其他字母的大小寫。如果只需要首字母大寫,通常配合strtolower()先將所有字母轉小寫。

實例展示:

$str="Hello MY world";
echo ucwords(strtolower($str));

【與HTML相關的函數】

1、nl2br($str):將字符串中所有的換行符,轉爲</br>。
2、htmlspecialchars($string):將指定的HTML的符號,轉爲實體內容(而不是執行);
& :&amp; ":&quot;
':&#039; <:&lt; 
>:&gt; 空格:&nbsp;
轉成特殊字符後,無需再轉回,瀏覽器會自動解析爲對應的標籤符號;

實例展示:

echo <<<str
這是定界符\n
聲明的字符串\n
Q的前端世界\n
str;
echo nl2br($str);

htmlspecialchars($str);

3、strip_tags($str)刪除出現的HTML標籤,將字符串中所有的HTML標籤刪除
參數: 1.需要過濾的HTML標籤的字符串
            2.允許的HTML標籤, 例如strip_tags($str,"<b>")允許$str中只存在b標籤;

實例展示:

$str = <<<str
    "哈哈哈"\n
    "嘻嘻嘻"\n    
str;
    
    echo nl2br($str);
    echo htmlspecialchars($_POST["test"]);
    echo "&lt;&gt;";

  <?= "haha"    ?>  // 輸出表達式,不能在PHP中使用,通常用於HTML嵌套:<h1 style="color: <?='red'?>"></h1>

strrev($str):將字符串反轉 "123"--"321"

strlen($str):統計字符串的字符個數,中文=3個字符
mb_strlen($str):測量多字節字符串的長度,不論中英文,都算一個長度
{PHP中,很多字符串長度,都有mb_的前綴,專門用於操作中文多字節字符串}

number_format():將一個浮點數,格式化爲一個字符串
參數:1.需要格式化的浮點數(必須)
   2.保留幾位小數,默認不保留
   3.小數點的顯示符號,默認.;
   4.千位分隔符的顯示符號,默認,;


md5()/sha1():分別使用md5及sha1加密算法對字符串進行加密操作;

實例展示:

 $str = "abcdefg";
 echo strrev($str);

 $str = "abcdefg";
 echo strlen($str);

【字符串的比較】

1.可以用運算符比較
    ①如果兩邊都是字符,則比較首字母ASCII值;
    ②如果有一邊是數字,則將字符串轉爲數字後再比較;
2、strcmp($str1,$str2)
    ①$str1>$str2--- 1 $str1<$str2----- -1 $str1==$str2----0
    ②strncmp 與strcmp完全相等,只是多了必填的第三個參數,表示字符串的長度
3、strcaseccmp 不區分大小寫比對全字符串
4、strnatcmp 將字符串按照自然排序算法進行比較
    strcmp("10","2");按照ASCII碼,1<2故返回-1
    strnatcmp("10","2");按照自然排序,10>2故返回1
所以兩個函數在字符串相等時,返回0,沒有任何差異
similar_text($first, $second)返回兩個字符串的相似度。

實例展示:

var_dump(similar_text("img12", "img13"));

【字符串的分隔】

1、explode 第一個分隔符(不能爲空""),第二個需要處理的字符串,第三個將字符串最多分爲幾份,如果小於實際分數,則前N-1個正常分,最後一個包含所有字符;

2、preg_split通過一個表達式分隔字符串,參數同上,第一個參數爲正則表達式;

參數:

    ① 需要分割的字符串;
    ②幾個字符做個數組的一個元素,可選,默認一個;
    ③將字符串的每個字符,分隔爲數組;

3、implode(string 連接符,Array 數組) 將數組用指定的連接符,鏈接爲一個字符串;
eg:implode("",["a","b","c"])---->abc
implode(",",["a","b","c"])---->a,b,c

實例展示:

var_dump(explode(",", "s,t,r,i,n,g",3));
 var_dump(str_split("hahahahaa",3));

substr(String $string, Int $start)
①需要截取的字符串,必選
②從第幾個字符開始截取,必選
③截取的長度 可選,默認直接截取到最後(漢字相當於三個字符,用mb_substr);
mb_substr($str, $start)用於截取中文字符串,一箇中文算一個字符
var_dump(substr("1234561111", 8,5));


字符串中查找 strstr 查找並返回字符串中是否包含某個子串,如果沒找到,返回false
① 被查找的字符串,必選
② 需要查找的子串,必選
③ true/false false:返回子串及子串後的所有字符串,默認
true:返回子串前的部分

stristr 功能同上,不區分大小寫

strrchr 取到第一個子串第一個字符最後一次出現的位置,返回當前位置及之後的字符串;
①被查找的字符
②需要查找的字符,如果第二個參數是字符串,則只會使用字符串的第一個字符,如果找到,返回該字符最後一次出現的位置,往後的部分;

實例展示:

var_dump(strstr("123456", 3));
var_dump(strrchr("123456", "234"));

重點!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
strpos返回某個子串在字符串中,第一次出現的位置
①被查找的字符串
②需要查找的字符串
③從第幾位開始查,默認從頭開始

strrpos返回某個子串在字符串中,最後一次出現的位置,其他同上;
stripos不區分大小寫,返回第一次出現的位置;
strripos不區分大小寫,返回最後一次出現的位置;

實例展示:

var_dump(strpos("123456aaxaa", "aa"));

str_replace
①被替換部分,可以是字符串也可以是數組
②新內容,可以是字符串也可以是數組
③原字符串

情況①第一個字符串,第二個字符串
var_dump(str_replace("e", "/", "aajsnianceomoe555el"));
原字符串中的e被替換爲/
情況②第一個數組,第二個數組
>>>1.兩數組長度相等,一一替換
2.數組一長度>數組二長度,第一個數組剩下的用""替換(刪了)
3.數組一長度<數組二長度,第二個數組剩下的不用
情況③第一個數組,第二個字符串,數組的每一個,都替換爲字符串.

實例展示:

var_dump(str_replace("e", "/", "aajsnianceomoe555el"));
var_dump(str_replace(["e","0"], ["/",""], "aajsnianceomoe5550el"));

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章