您好,登錄后才能下訂單哦!
由于PHP是弱語言類型,所以當使用字符串操作函數是,其他類型的數據也會被當作字符串來處理。
一、字符串定義與顯示
字符串通過單引號、雙引號來標志,前者將單引號內所有的字符都當作字符來處理,后者則不是。
字符串的顯示可以使用echo()和print()函數,二者區別:print()具有返回值,返回1,而echo()則沒有,所以echo()比print()要快一些,print()能應用于復合語句中,而echo()不能。另外echo可以一次輸出多個字符串,而print不可以。
二、字符串的格式化
函數printf()將一個通過替換值建立的字符串輸出到格式字符串中,語法格式為:
int printf(string $format [,mixed $args])
第一個參數$format是格式字符串,$args是要替換進來的值,格式字符串里的字符“%”指出了一個替換標記。
格式字符串中的每一個替換標記都由一個百分號組成,后面可能跟有一個填充字符、一個對齊方式字符、字段寬度和一個類型說明符。字符串的類型說明符為“s”。
所有的轉換說明都以一個“%”開始,如果想打印一個“%”,必須使用“%%”。填充字符表明該字符用于填充結果,使結果為適當大小的字符串,默認情況下使用空格填充;對齊方式字符對字符串和數組有不同的作用,對于字符串,減號“-”使該字符串右對齊(默認為左對齊),對于數字,加號“+”使正數在輸出的時候以加號開頭;字段寬度是指字符串應該輸出的寬度,如果字符串實際長度小于該值,則使用填充字符填充;類型說明符表示要替換進來的值將要轉化的數據類型。
函數sprintf()所帶的參數和printf()函數一樣,但是返回的是內置的字符串,使得可以在變量中存儲字符串供以后使用。
函數vprintf()允許在格式后面用數組作為參數,用法和printf()函數基本相同。
函數vsprintf()和vprintf()函數一樣,可以用數組作為參數,但不使出字符串。
三、常用字符串函數
1.計算字符串長度
strlen()函數:int strlen(string $string)
該函數返回字符串的長度,1個英文字符長度為1個字符,1個漢字長度為2個字符,字符串中的空格也算一個字符。
2.將字符串改變大小寫
strtolower()函數可以將字符串全部轉化為小寫,使用strtoupper()函數將字符串全部轉化為大寫。
ucfirst()函數可以將字符串的第一個字符改成大寫,ucwords()函數可以將字符串中的每個單詞的第第一個字母改成大寫。
3.字符串裁剪
ltrim()、rtrim()、trim()函數分別用于刪除字符串中最左邊、最右邊和兩邊與指定的字符,并返回剩余的字符串。
string trim(string $str[,string $charlist])
string rtrim(string $str[,string $charlist])
string ltrim(string $str[,string $charlist])
trim、ltrim、rtrim函數的默認刪除字符
字符 | ASCII碼 | 意義 |
"" | 32(0x20) | 空格 |
"\t" | 9(0x09) | 制表符 |
"\n" | 10(0x0A) | 換行 |
"\r" | 13(0x0D) | 回車 |
"\0" | 0(0x00) | 空字節 |
"\x0B" | 11(0x0B) | 垂直制表符 |
4.字符串的查找
strstr()函數和stristr()函數,兩者功能、返回值都一樣,只是stristr()函數不區分大小寫。
strstr()函數的語法格式:string strstr(string $haystack,string $needle)
strstr()函數用于查找字符串指針$needle在字符串$haystack中出現的位置,并返回$haystack字符串中從$needle開始到$haystack字符串結束處的字符串。如果沒有返回值,也沒有發現$needle,則返回FALSE。strstr()函數還有一個同名函數strchr()。
5.字符串與ASCII碼
使用ord()函數可以返回字符的ASCII碼,也可以使用chr()函數返回ASCII碼對應的字符。
四、字符串的比較
比較主要是對字符串的類型及大小寫的比較。字符串的比較可以使用比較運算符“==”、“!=”、“===”、“!==”來進行比較,也可以使用比較函數來比較。
使用“!=”和“==”比較的兩個對象不一定要類型相等,整型也可以和字符串比較。而“!==”和“===”比較的對象類型要嚴格相同才可能返回TRUE。
常用的字符串比較函數有:strcmp()、strcasecmp()、strncmp()和strncasecmp()。語法格式如下:
int strcmp(string $str1,string $str2)
int strcasecmp(string $str1, string $str2)
int strncmp(string $str1,string $str2,int $len)
int strncasecmp(string $str1,string $str2,int $len)
四個函數都用于比較字符串的大小,如果$str1比$str2大,則他們都返回大于0的整數;如果$str1比$str2小,則返回小于0的整數,如果兩者相等,則返回0.
不同的是,strcmp()函數用于區分大小寫的字符串比較;strcasecmp()函數用于不區分大小寫的比較;strncmp()函數用于比較字符串的一部分,從字符串的開頭開始比較,$len是要比較的長度;strncasecmp()函數的作用和strncmp()函數一樣,只是不區分大小寫。
五、字符串的替換
字符串的替換指的是使用指定的字符串替換原來字符串中的相關字符,以組成新的字符串來滿足新的要求。
常用的就是str_replace()函數,語法如下:
mixed str_replace(mixed $search,mixed $replace,mixed $subject[,int &$count])
str_replace()函數使用新的字符串$replace替換字符串$subject中的$search字符串。$count是可選參數,表示要執行的替換操作的次數。
str_replace()函數對大小寫敏感,還可以實現多對一,多對多的替換,但無法實現一對多的替換。
使用多對多替換時,第一個數組中的元素被第二個數組中對應的元素替換,如果有一個數組比另一個數組元素少,那不足的部分會當作空來處理。
substr_replace()函數實現替換字符串的一部分,語法格式:
mixed substr_replace(mixed $string,string $replacement,int $start[,int $length])
參數$string為原字符串,$replacement為要替換的字符串。
$start是開始替換的位置的偏移量,從0開始計算,如果為0或是一個正值,就是從字符串開始處計算的偏移量,如果是負值則是從字符串的末尾計算的偏移量。
$length是可選參數,表示要替換的長度,如果不給定從$start位置開始一直到字符串結束;如果$length為0,則替換字符串會插入到原字符串中;如果$length是正值,則表示用替換字符串替換掉的字符串成都;如果$length是負值,表示從字符串末尾開始到$length個字符為止停止替換。
六、字符串與HTML
1.將字符轉換為HTML實體形式
函數htmlspecialchars()可以將字符轉化為HTML的實體形式。
可以轉化為HTML實體形式的特殊字符
原字符 | 字符名稱 | 轉換后的字符 |
& | AND記號 | & |
" | 雙引號 | " |
' | 單引號 | '; |
< | 小于號 | < |
> | 大于號 | > |
htmlspecialchars()函數的語法格式如下:
string htmlspecialchars(string $string[,int $quote_style[,string $charset[,bool $double_encode]]])
參數$string是要轉換的字符串,$quote_style、$charset和$doublt_encode都是可選參數。$quote_style指定如何轉換單引號和雙引號字符,取值可以是ENT_COMPAT(默認值,只轉換雙引號)、ENT_NOQUOTES(都不轉換)和ENT_QUOTES(都轉換)。$charset是字符集,默認為ISO-859-1。參數$double_encode如果為FALSE則不轉換成HTML實體,默認為TRUE
htmlentities()函數也可以將特殊字符轉換為實體,不過htmlspecialchars()函數只轉換&、“、‘、<、>這5個字符,而htmlentities()函數則會把漢字也進行轉化。
2.將HTML實體形式轉換為特殊字符
使用htmlspecialchars_decode()函數可以將HTML的實體形式轉化為HTML格式,html_entity_decode()函數可以把所有HTML實體形式轉換為HTML格式
3.換行符的轉換
在HTML文件中使用"\n",顯示html代碼時不能顯示換行的效果,這時可以使用nl2br()函數,這個函數可以用html中的"<br/>"標記代替字符串中的換行符"\n"。
七、其他字符串函數
1.字符串與數組
(1)字符串轉化為數組
使用explode()函數可以用指定的字符串分割另一個字符串,并返回一個數組。
array explode(string $separator ,string $string[,int $limit])
此函數返回由字符串組成的數組,每個元素都是$string的一個子串,它們被字符串$separator作為邊界點分割出來。
如果設置了$limit參數,則返回的數值包含最多$limit個元素,而最后那個元素將包含$string的剩余部分。如果$limit參數是負數,則返回除了最后的-$limit個元素外的所有元素。
如果參數$separator為空字符串(""),explode()函數將返回FALSE,如果$separator所包含的值在$string中找不到,explode()函數將返回包含$string單個元素的數組。
(2)數組轉化為字符串
使用implode()函數可以將數組中的字符串連接成一個字符串
string implode(string $glue,array $pieces)
$pieces是保存要連接的字符串的數組,$glue是用于連接字符串的連接符。
implode()函數還有一個別名,即join()函數。
2.字符串加密函數
crypt()函數完成加密功能
string crypt(string $str[,string $salt])
該函數完成的是單向加密功能,即字符串一旦被加密就無法轉換成原來的形式。函數中$str是需要加密的字符串,第二個可選參數$salt是一個位字串,它能影響加密的暗碼,進一步排除與計算***的可能性。
如果要獲得更高的安全性,可以使用md5()函數,這個函數使用MD5散列算法,將一個字符串轉換成一個長32位的唯一字符串,這個過程是不可逆的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。