PHP入門學(xué)習(xí)之字符串操作
字符串簡(jiǎn)介
字符串是指由零個(gè)或多個(gè)字符構(gòu)成的一個(gè)集合,這里所說的字符主要包含以下幾種類型:
- 數(shù)字類型,如1、2、3等。
- 字母類型,如a、b、c、d等。
- 特殊字符,如#、$、%、^、&等。
- 不可見字符,如\n(換行符)、\r(回車符)、\t(Tab字符)等。
其中,不可見字符是比較特殊的一組字符,它用來控制字符串格式化輸出,在瀏覽器上不可見,只能看到字符串輸出的結(jié)果,如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>PHP語言基礎(chǔ)</title> </head> <body> <?php header("Content-Type:text/html; charset=gb2312"); echo "pear\rapple\nbanan\tfruit"; ?> </body> </html>
運(yùn)行結(jié)果: pear apple banan fruit
發(fā)現(xiàn)并沒有在瀏覽器上進(jìn)行換行、回車之類的。 點(diǎn)擊網(wǎng)頁查看源代碼:
單引號(hào)和雙引號(hào)的區(qū)別
字符串通常以串的整體作為操作對(duì)象,一般用雙引號(hào)或者單引號(hào)標(biāo)識(shí)一個(gè)字符串。單引號(hào)和雙引號(hào)在使用上有一定區(qū)別。對(duì)于定義的普通字符串看不出兩者之間的區(qū)別。而通過對(duì)變量的處理,即可輕松地理解兩者之間的區(qū)別。
雙引號(hào)中的內(nèi)容是經(jīng)過PHP的語法分析器解析過的,任何變量在雙引號(hào)中都會(huì)被轉(zhuǎn)換為它的值進(jìn)行輸出顯示;而單引號(hào)的內(nèi)容是“所見即所得”的,無論有無變量,都被當(dāng)作普通字符串進(jìn)行原樣輸出。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>PHP語言基礎(chǔ)</title> </head> <body> <?php header("Content-Type:text/html; charset=gb2312"); $str="PHP"; $str1="$str"; $str2='$str'; echo $str1."<br>"; echo $str2; ?> </body> </html>
運(yùn)行結(jié)果:
PHP
$str
技巧:?jiǎn)我?hào)串和雙引號(hào)串在PHP中的處理是不相同的。雙引號(hào)串中的內(nèi)容可以被解釋并替換,而單引號(hào)串中的內(nèi)容則只能被作為普通字符進(jìn)行處理。
注意:在進(jìn)行SQL查詢之前,所有字符串都必須加單引號(hào),以避免可能的注入漏洞和SQL錯(cuò)誤。
字符串的連接符
半角句號(hào)“.”是字符串連接符,可以把兩個(gè)或兩個(gè)以上的字符串連接成一個(gè)字符串。 應(yīng)用字符串連接符號(hào)無法實(shí)現(xiàn)大量簡(jiǎn)單字符串的連接,PHP允許程序員在雙引號(hào)中直接包含字符串變量,當(dāng)echo語句后面使用的是雙引號(hào)(”)時(shí),可以使用下面的格式來達(dá)到同樣的效果。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>PHP語言基礎(chǔ)</title> </head> <body> <?php header("Content-Type:text/html; charset=gb2312"); $str1="Java"; $str2="PHP"; echo "$str1,$str2,C++"; ?> </body> </html>
運(yùn)行結(jié)果:
Java,PHP,C++
去除字符串首尾空格和特殊字符
用戶在輸入數(shù)據(jù)時(shí),經(jīng)常會(huì)在無意中輸入多余的空格,在有些情況下,字符串中不允許出現(xiàn)空格和特殊字符,此時(shí)就需要去除字符串中的空格和特殊字符。在PHP中提供了trim()函數(shù)去除字符串左右兩邊的空格和特殊字符、ltrim()函數(shù)去除字符串左邊的空格和特殊字符、rtrim()函數(shù)去除字符串中右邊的空格和特殊字符。
1.trim()函數(shù)
trim()函數(shù)用于去除字符串開始位置以及結(jié)束位置的空格,并返回去掉空格后的字符串。
語法格式如下:
string trim(string str [,string charlist]);
trim()函數(shù)的參數(shù)str是要操作的字符串對(duì)象,參數(shù)charlist為可選參數(shù),指定需要從指定的字符串中刪除哪些字符,如果不設(shè)置該參數(shù),則所有的可選字符都將被刪除。
trim()函數(shù)的參數(shù)charlist的可選值如下表所示。
注意:除了以上默認(rèn)的過濾字符列表外,也可以在charlist參數(shù)中提供要過濾的特殊字符。
使用trim()函數(shù)去除字符串左右兩邊的空格及特殊字符“\r\r(: :)”:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>PHP語言基礎(chǔ)</title> </head> <body> <?php header("Content-Type:text/html; charset=gb2312"); $str="\r\r(:@_@ 學(xué)習(xí)PHP @_@:) "; echo trim($str);//去除字符串左右兩邊的空格 echo "<br>"; echo trim($str,"\r\r(: :)");//去除字符串左右兩邊的特殊字符\r\r(::) ?> </body> </html>
運(yùn)行結(jié)果:
(:@@ 學(xué)習(xí)PHP @@:)
@@ 學(xué)習(xí)PHP @@
2.Itrim()函數(shù)
Itrim()函數(shù)用于去除字符串左邊的空格或者指定字符串。
語法格式如下:
string ltrim( string str [,string charlist]);
使用Itrim()函數(shù)去除字符串左邊的空格及特殊字符“(:@_@”:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>PHP語言基礎(chǔ)</title> </head> <body> <?php header("Content-Type:text/html; charset=gb2312"); $str=" (:@_@ 學(xué)習(xí)PHP @_@:) "; echo trim($str);//去除字符串左邊的空格 echo "<br>"; echo ltrim($str," (:@_@");//去除字符串左邊的特殊字符 (:@_@ ?> </body> </html>
運(yùn)行結(jié)果:
(:@@ 學(xué)習(xí)PHP @@:)
學(xué)習(xí)PHP @_@:)
3.rtrim()函數(shù)
rtrim()函數(shù)用于去除字符串右邊的空格。
語法格式如下:
String rtrim(string str [,string charlist]);
使用rtrim()函數(shù)去除字符串右邊的空格及特殊字符“@_@:)”:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>PHP語言基礎(chǔ)</title> </head> <body> <?php header("Content-Type:text/html; charset=gb2312"); $str=" (:@_@ 學(xué)習(xí)PHP @_@:) "; echo trim($str);//去除字符串右邊的空格 echo "<br>"; echo rtrim($str," @_@:)");//去除字符串右邊的特殊字符 @_@:) ?> </body> </html>
運(yùn)行結(jié)果:
(:@@ 學(xué)習(xí)PHP @@:)
(:@_@ 學(xué)習(xí)PHP
轉(zhuǎn)義、還原字符串?dāng)?shù)據(jù)
字符串轉(zhuǎn)義、還原的方法有兩種:一種是手動(dòng)轉(zhuǎn)義、還原字符串?dāng)?shù)據(jù),另一種是自動(dòng)轉(zhuǎn)義、還原字符串?dāng)?shù)據(jù)。下面分別對(duì)這兩種方法進(jìn)行詳細(xì)講解。
1.手動(dòng)轉(zhuǎn)義、還原字符串?dāng)?shù)據(jù)
字符串可以用單引號(hào)(‘)、雙引號(hào)(“”)、定界符({})3種方法定義。而指定一個(gè)簡(jiǎn)單字符串的最簡(jiǎn)單的方法是用單引號(hào)(‘)括起來。當(dāng)使用字符串時(shí),很可能在該串中存在這幾種符號(hào)與PHP腳本混淆的字符,因此必須要做轉(zhuǎn)義語句。這就要在它的前面使用轉(zhuǎn)義符號(hào)“\”。
“\”是一個(gè)轉(zhuǎn)義符,緊跟在“\”后面的第一個(gè)字符將變得沒有意義或有特殊意義。如‘是字符串的定界符,寫為\'時(shí)就失去了定界符的意義,變?yōu)榱似胀ǖ膯我?hào)‘。讀者可以通過echo '\‘';輸出一個(gè)單引號(hào)‘,同時(shí)轉(zhuǎn)義字符“\”也不會(huì)顯示。
技巧1:如果要在字符串中表示單引號(hào),則需要用反斜線(\)進(jìn)行轉(zhuǎn)義。例如,要表示字符串“I‘m”,則需要寫成“I\'m”。
技巧2 :對(duì)于簡(jiǎn)單的字符串建議采用手動(dòng)方法進(jìn)行字符串轉(zhuǎn)義,而對(duì)于數(shù)據(jù)量較大的字符串,建議采用自動(dòng)轉(zhuǎn)義函數(shù)實(shí)現(xiàn)字符串的轉(zhuǎn)義。
說明:手動(dòng)轉(zhuǎn)義字符串可應(yīng)用addcslashes()函數(shù)進(jìn)行字符串還原,其具體的實(shí)現(xiàn)方法將在下面進(jìn)行介紹。
使用轉(zhuǎn)義字符“\”對(duì)字符串進(jìn)行轉(zhuǎn)義:
<?php header("Content-Type:text/html; charset=gb2312"); echo 'php,\'學(xué)習(xí)PHP\''; ?>
運(yùn)行結(jié)果:
php,'學(xué)習(xí)PHP'
2.自動(dòng)轉(zhuǎn)義、還原字符串?dāng)?shù)據(jù)
自動(dòng)轉(zhuǎn)義、還原字符串?dāng)?shù)據(jù)可以應(yīng)用PHP提供的addslashes()函數(shù)和stripslashes()函數(shù)實(shí)現(xiàn)。
1.addslashes()函數(shù)
addslashes()函數(shù)用來為字符串str加入斜線“\”。
語法格式如下:
string addslashes (string str)
2.stripslashes()函數(shù)
stripslashes()函數(shù)用來將使用addslashes()函數(shù)轉(zhuǎn)義后的字符串str返回原樣。
string stripslashes(string str);
使用自動(dòng)轉(zhuǎn)義字符addslashes()函數(shù)對(duì)字符串進(jìn)行轉(zhuǎn)義,然后使用stripslashes()函數(shù)進(jìn)行還原:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>PHP語言基礎(chǔ)</title> </head> <body> <?php header("Content-Type:text/html; charset=gb2312"); $str="php,'學(xué)習(xí)PHP'"; echo $str."<br>"; $a=addslashes($str); //對(duì)字符串中的特殊字符進(jìn)行轉(zhuǎn)義 echo $a."<br>"; $b=stripslashes($a);//對(duì)轉(zhuǎn)義字符進(jìn)行還原 echo $b; ?> </body> </html>
運(yùn)行結(jié)果:
php,'學(xué)習(xí)PHP'
php,\'學(xué)習(xí)PHP\'
php,'學(xué)習(xí)PHP'
技巧:所有數(shù)據(jù)在插入數(shù)據(jù)庫(kù)之前,有必要應(yīng)用addslashes()函數(shù)進(jìn)行字符串轉(zhuǎn)義,以免特殊字符未經(jīng)轉(zhuǎn)義在插入數(shù)據(jù)庫(kù)時(shí)出現(xiàn)錯(cuò)誤。另外,對(duì)于使用addslashes()函數(shù)實(shí)現(xiàn)的自動(dòng)轉(zhuǎn)義字符串可以使用stripcslashes()函數(shù)進(jìn)行還原,但數(shù)據(jù)在插入數(shù)據(jù)庫(kù)之前必須再次進(jìn)行轉(zhuǎn)義。
以上兩個(gè)函數(shù)實(shí)現(xiàn)了對(duì)指定字符串進(jìn)行自動(dòng)轉(zhuǎn)義和還原。除了上面介紹的方法外,還可以對(duì)要轉(zhuǎn)義、還原的字符串進(jìn)行一定范圍的限制,通過使用addcslashes()函數(shù)和stripcslashes()函數(shù)實(shí)現(xiàn)對(duì)指定范圍內(nèi)的字符串進(jìn)行自動(dòng)轉(zhuǎn)義、還原。下面分別對(duì)兩個(gè)函數(shù)進(jìn)行詳細(xì)介紹。
3.addcslashes()函數(shù)
實(shí)現(xiàn)轉(zhuǎn)義字符串中的字符,即在指定的字符charlist前加上反斜線。
語法格式如下:
string addcslashes (string str, string charlist)
參數(shù)說明:
參數(shù)str為將要被操作的字符串,參數(shù)charlist指定在字符串中的哪些字符前加上反斜線“\”,如果參數(shù)charlist中包含\n、\r等字
符,將以C語言風(fēng)格轉(zhuǎn)換,而其他非字母數(shù)字且ASCII碼低于32以及高于126的字符均轉(zhuǎn)換成八進(jìn)制表示。
注意:在定義參數(shù)charlist的范圍時(shí),需要明確在開始和結(jié)束的范圍內(nèi)的字符。
4.stripcslashes()函數(shù)
stripcslashes()函數(shù)用來將應(yīng)用addcslashes()函數(shù)轉(zhuǎn)義的字符串str還原。
語法格式如下:
string stripcslashes (string str)
使用addcslashes()函數(shù)對(duì)字符串進(jìn)行轉(zhuǎn)義,使用stripcslashes()函數(shù)對(duì)轉(zhuǎn)義的字符串進(jìn)行還原。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>PHP語言基礎(chǔ)</title> </head> <body> <?php header("Content-Type:text/html; charset=gb2312"); $str="學(xué)習(xí)PHP"; echo $str."<br>"; $b=addcslashes($str,"學(xué)習(xí)PHP"); echo $b."<br>"; $c=stripcslashes($b); echo $c; ?> </body> </html>
運(yùn)行結(jié)果:
學(xué)習(xí)PHP
\321\247\317\260\P\H\P
學(xué)習(xí)PHP
技巧:在緩存文件中,一般對(duì)緩存數(shù)據(jù)的值采用addcslashes()函數(shù)進(jìn)行指定范圍的轉(zhuǎn)義。
以上就是PHP入門學(xué)習(xí)之字符串操作的詳細(xì)內(nèi)容,更多關(guān)于PHP字符串操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
php數(shù)組函數(shù)序列之a(chǎn)rray_push() 數(shù)組尾部添加一個(gè)或多個(gè)元素(入棧),返回新長(zhǎng)度。
array_push() 定義和用法array_push() 函數(shù)向第一個(gè)參數(shù)的數(shù)組尾部添加一個(gè)或多個(gè)元素(入棧),然后返回新數(shù)組的長(zhǎng)度2011-11-11php實(shí)現(xiàn)查詢百度google收錄情況(示例代碼)
對(duì)了貌似查google pr的東西只是file一個(gè)地址而已,如此說了就沒有什么難度了。完整代碼如下2013-08-08PHP使用mkdir創(chuàng)建多級(jí)目錄的方法
這篇文章主要介紹了PHP使用mkdir創(chuàng)建多級(jí)目錄的方法,結(jié)合實(shí)例詳細(xì)分析了PHP中mkdir函數(shù)的使用技巧,需要的朋友可以參考下2015-12-12php模擬用戶自動(dòng)在qq空間發(fā)表文章的方法
這篇文章主要介紹了php模擬用戶自動(dòng)在qq空間發(fā)表文章的方法,可實(shí)現(xiàn)模擬用戶提交表單發(fā)布文章的功能,代碼中包含有較為詳盡的注釋便于理解,需要的朋友可以參考下2015-01-01php中$_REQUEST、$_POST、$_GET的區(qū)別和聯(lián)系小結(jié)
php中有$_request與$_post、$_get用于接受表單數(shù)據(jù),當(dāng)時(shí)他們有何種區(qū)別,什么時(shí)候用那種最好。2011-11-11PHPStorm+XDebug進(jìn)行調(diào)試圖文教程
這篇文章主要為大家詳細(xì)介紹了PHPStorm+XDebug進(jìn)行調(diào)試圖文教程,內(nèi)容很豐富,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06PHP編程實(shí)現(xiàn)陽歷轉(zhuǎn)換為陰歷的方法實(shí)例
這篇文章主要介紹了PHP編程實(shí)現(xiàn)陽歷轉(zhuǎn)換為陰歷的方法,結(jié)合具體實(shí)例形式分析了php陰歷操作類的定義與使用技巧,需要的朋友可以參考下2017-08-08