重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
由于PHP是弱語言類型,所以當(dāng)使用字符串操作函數(shù)是,其他類型的數(shù)據(jù)也會被當(dāng)作字符串來處理。
一、字符串定義與顯示
字符串通過單引號、雙引號來標(biāo)志,前者將單引號內(nèi)所有的字符都當(dāng)作字符來處理,后者則不是。
字符串的顯示可以使用echo()和print()函數(shù),二者區(qū)別:print()具有返回值,返回1,而echo()則沒有,所以echo()比print()要快一些,print()能應(yīng)用于復(fù)合語句中,而echo()不能。另外echo可以一次輸出多個(gè)字符串,而print不可以。
二、字符串的格式化
函數(shù)printf()將一個(gè)通過替換值建立的字符串輸出到格式字符串中,語法格式為:
int printf(string $format [,mixed $args])
第一個(gè)參數(shù)$format是格式字符串,$args是要替換進(jìn)來的值,格式字符串里的字符“%”指出了一個(gè)替換標(biāo)記。
格式字符串中的每一個(gè)替換標(biāo)記都由一個(gè)百分號組成,后面可能跟有一個(gè)填充字符、一個(gè)對齊方式字符、字段寬度和一個(gè)類型說明符。字符串的類型說明符為“s”。
所有的轉(zhuǎn)換說明都以一個(gè)“%”開始,如果想打印一個(gè)“%”,必須使用“%%”。填充字符表明該字符用于填充結(jié)果,使結(jié)果為適當(dāng)大小的字符串,默認(rèn)情況下使用空格填充;對齊方式字符對字符串和數(shù)組有不同的作用,對于字符串,減號“-”使該字符串右對齊(默認(rèn)為左對齊),對于數(shù)字,加號“+”使正數(shù)在輸出的時(shí)候以加號開頭;字段寬度是指字符串應(yīng)該輸出的寬度,如果字符串實(shí)際長度小于該值,則使用填充字符填充;類型說明符表示要替換進(jìn)來的值將要轉(zhuǎn)化的數(shù)據(jù)類型。
函數(shù)sprintf()所帶的參數(shù)和printf()函數(shù)一樣,但是返回的是內(nèi)置的字符串,使得可以在變量中存儲字符串供以后使用。
函數(shù)vprintf()允許在格式后面用數(shù)組作為參數(shù),用法和printf()函數(shù)基本相同。
函數(shù)vsprintf()和vprintf()函數(shù)一樣,可以用數(shù)組作為參數(shù),但不使出字符串。
三、常用字符串函數(shù)
1.計(jì)算字符串長度
strlen()函數(shù):int strlen(string $string)
該函數(shù)返回字符串的長度,1個(gè)英文字符長度為1個(gè)字符,1個(gè)漢字長度為2個(gè)字符,字符串中的空格也算一個(gè)字符。
2.將字符串改變大小寫
strtolower()函數(shù)可以將字符串全部轉(zhuǎn)化為小寫,使用strtoupper()函數(shù)將字符串全部轉(zhuǎn)化為大寫。
ucfirst()函數(shù)可以將字符串的第一個(gè)字符改成大寫,ucwords()函數(shù)可以將字符串中的每個(gè)單詞的第第一個(gè)字母改成大寫。
3.字符串裁剪
ltrim()、rtrim()、trim()函數(shù)分別用于刪除字符串中最左邊、最右邊和兩邊與指定的字符,并返回剩余的字符串。
string trim(string $str[,string $charlist])
string rtrim(string $str[,string $charlist])
string ltrim(string $str[,string $charlist])
trim、ltrim、rtrim函數(shù)的默認(rèn)刪除字符
字符 | ASCII碼 | 意義 |
"" | 32(0x20) | 空格 |
"\t" | 9(0x09) | 制表符 |
"\n" | 10(0x0A) | 換行 |
"\r" | 13(0x0D) | 回車 |
"\0" | 0(0x00) | 空字節(jié) |
"\x0B" | 11(0x0B) | 垂直制表符 |
4.字符串的查找
strstr()函數(shù)和stristr()函數(shù),兩者功能、返回值都一樣,只是stristr()函數(shù)不區(qū)分大小寫。
strstr()函數(shù)的語法格式:string strstr(string $haystack,string $needle)
strstr()函數(shù)用于查找字符串指針$needle在字符串$haystack中出現(xiàn)的位置,并返回$haystack字符串中從$needle開始到$haystack字符串結(jié)束處的字符串。如果沒有返回值,也沒有發(fā)現(xiàn)$needle,則返回FALSE。strstr()函數(shù)還有一個(gè)同名函數(shù)strchr()。
5.字符串與ASCII碼
使用ord()函數(shù)可以返回字符的ASCII碼,也可以使用chr()函數(shù)返回ASCII碼對應(yīng)的字符。
四、字符串的比較
比較主要是對字符串的類型及大小寫的比較。字符串的比較可以使用比較運(yùn)算符“==”、“!=”、“===”、“!==”來進(jìn)行比較,也可以使用比較函數(shù)來比較。
使用“!=”和“==”比較的兩個(gè)對象不一定要類型相等,整型也可以和字符串比較。而“!==”和“===”比較的對象類型要嚴(yán)格相同才可能返回TRUE。
常用的字符串比較函數(shù)有: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)
四個(gè)函數(shù)都用于比較字符串的大小,如果$str1比$str2大,則他們都返回大于0的整數(shù);如果$str1比$str2小,則返回小于0的整數(shù),如果兩者相等,則返回0.
不同的是,strcmp()函數(shù)用于區(qū)分大小寫的字符串比較;strcasecmp()函數(shù)用于不區(qū)分大小寫的比較;strncmp()函數(shù)用于比較字符串的一部分,從字符串的開頭開始比較,$len是要比較的長度;strncasecmp()函數(shù)的作用和strncmp()函數(shù)一樣,只是不區(qū)分大小寫。
五、字符串的替換
字符串的替換指的是使用指定的字符串替換原來字符串中的相關(guān)字符,以組成新的字符串來滿足新的要求。
常用的就是str_replace()函數(shù),語法如下:
mixed str_replace(mixed $search,mixed $replace,mixed $subject[,int &$count])
str_replace()函數(shù)使用新的字符串$replace替換字符串$subject中的$search字符串。$count是可選參數(shù),表示要執(zhí)行的替換操作的次數(shù)。
str_replace()函數(shù)對大小寫敏感,還可以實(shí)現(xiàn)多對一,多對多的替換,但無法實(shí)現(xiàn)一對多的替換。
使用多對多替換時(shí),第一個(gè)數(shù)組中的元素被第二個(gè)數(shù)組中對應(yīng)的元素替換,如果有一個(gè)數(shù)組比另一個(gè)數(shù)組元素少,那不足的部分會當(dāng)作空來處理。
substr_replace()函數(shù)實(shí)現(xiàn)替換字符串的一部分,語法格式:
mixed substr_replace(mixed $string,string $replacement,int $start[,int $length])
參數(shù)$string為原字符串,$replacement為要替換的字符串。
$start是開始替換的位置的偏移量,從0開始計(jì)算,如果為0或是一個(gè)正值,就是從字符串開始處計(jì)算的偏移量,如果是負(fù)值則是從字符串的末尾計(jì)算的偏移量。
$length是可選參數(shù),表示要替換的長度,如果不給定從$start位置開始一直到字符串結(jié)束;如果$length為0,則替換字符串會插入到原字符串中;如果$length是正值,則表示用替換字符串替換掉的字符串成都;如果$length是負(fù)值,表示從字符串末尾開始到$length個(gè)字符為止停止替換。
六、字符串與HTML
1.將字符轉(zhuǎn)換為HTML實(shí)體形式
函數(shù)htmlspecialchars()可以將字符轉(zhuǎn)化為HTML的實(shí)體形式。
可以轉(zhuǎn)化為HTML實(shí)體形式的特殊字符
原字符 | 字符名稱 | 轉(zhuǎn)換后的字符 |
& | AND記號 | & |
" | 雙引號 | " |
' | 單引號 | '; |
< | 小于號 | < |
> | 大于號 | > |
htmlspecialchars()函數(shù)的語法格式如下:
string htmlspecialchars(string $string[,int $quote_style[,string $charset[,bool $double_encode]]])
參數(shù)$string是要轉(zhuǎn)換的字符串,$quote_style、$charset和$doublt_encode都是可選參數(shù)。$quote_style指定如何轉(zhuǎn)換單引號和雙引號字符,取值可以是ENT_COMPAT(默認(rèn)值,只轉(zhuǎn)換雙引號)、ENT_NOQUOTES(都不轉(zhuǎn)換)和ENT_QUOTES(都轉(zhuǎn)換)。$charset是字符集,默認(rèn)為ISO-859-1。參數(shù)$double_encode如果為FALSE則不轉(zhuǎn)換成HTML實(shí)體,默認(rèn)為TRUE
htmlentities()函數(shù)也可以將特殊字符轉(zhuǎn)換為實(shí)體,不過htmlspecialchars()函數(shù)只轉(zhuǎn)換&、“、‘、<、>這5個(gè)字符,而htmlentities()函數(shù)則會把漢字也進(jìn)行轉(zhuǎn)化。
2.將HTML實(shí)體形式轉(zhuǎn)換為特殊字符
使用htmlspecialchars_decode()函數(shù)可以將HTML的實(shí)體形式轉(zhuǎn)化為HTML格式,html_entity_decode()函數(shù)可以把所有HTML實(shí)體形式轉(zhuǎn)換為HTML格式
3.換行符的轉(zhuǎn)換
在HTML文件中使用"\n",顯示html代碼時(shí)不能顯示換行的效果,這時(shí)可以使用nl2br()函數(shù),這個(gè)函數(shù)可以用html中的"
"標(biāo)記代替字符串中的換行符"\n"。
七、其他字符串函數(shù)
1.字符串與數(shù)組
(1)字符串轉(zhuǎn)化為數(shù)組
使用explode()函數(shù)可以用指定的字符串分割另一個(gè)字符串,并返回一個(gè)數(shù)組。
array explode(string $separator ,string $string[,int $limit])
此函數(shù)返回由字符串組成的數(shù)組,每個(gè)元素都是$string的一個(gè)子串,它們被字符串$separator作為邊界點(diǎn)分割出來。
如果設(shè)置了$limit參數(shù),則返回的數(shù)值包含最多$limit個(gè)元素,而最后那個(gè)元素將包含$string的剩余部分。如果$limit參數(shù)是負(fù)數(shù),則返回除了最后的-$limit個(gè)元素外的所有元素。
如果參數(shù)$separator為空字符串(""),explode()函數(shù)將返回FALSE,如果$separator所包含的值在$string中找不到,explode()函數(shù)將返回包含$string單個(gè)元素的數(shù)組。
(2)數(shù)組轉(zhuǎn)化為字符串
使用implode()函數(shù)可以將數(shù)組中的字符串連接成一個(gè)字符串
string implode(string $glue,array $pieces)
$pieces是保存要連接的字符串的數(shù)組,$glue是用于連接字符串的連接符。
implode()函數(shù)還有一個(gè)別名,即join()函數(shù)。
2.字符串加密函數(shù)
crypt()函數(shù)完成加密功能
string crypt(string $str[,string $salt])
該函數(shù)完成的是單向加密功能,即字符串一旦被加密就無法轉(zhuǎn)換成原來的形式。函數(shù)中$str是需要加密的字符串,第二個(gè)可選參數(shù)$salt是一個(gè)位字串,它能影響加密的暗碼,進(jìn)一步排除與計(jì)算***的可能性。
如果要獲得更高的安全性,可以使用md5()函數(shù),這個(gè)函數(shù)使用MD5散列算法,將一個(gè)字符串轉(zhuǎn)換成一個(gè)長32位的唯一字符串,這個(gè)過程是不可逆的。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。