連接和分割字符串

做網(wǎng)站中,一般地,如果想查看字符串的各個(gè)部分。例如,查看句子中的單詞(如在拼寫檢查時(shí)),或者要將一個(gè)域名或電子郵件地址分割成一個(gè)個(gè)的組件部分。PHP提供了幾個(gè)字符串函數(shù)(和一個(gè)正則表達(dá)式函數(shù))來實(shí)現(xiàn)此功能。

explode()函數(shù)能夠劈開字符串,具體語法如下:array explode(string separator, string input, int limit);

這個(gè)函數(shù)帶有一個(gè)輸入字符串作為參數(shù),并根據(jù)一個(gè)指定的分隔符字符串將字符串本身分割為小塊,將分割后的小塊返回到一個(gè)數(shù)組中。可以通過可選的參數(shù)limit來限制分成字符串小塊的數(shù)量。

【示例1】如果通過顧客的電子郵件地址獲得域名,可以使用如下所示的代碼:$email_array = explode("@", $email);

在這里,調(diào)用函數(shù)explode()將顧客的電子郵件地址分割成兩部分:用戶名稱,它保存于$email_array[0]中,而域名保存在$email_array[1]中。現(xiàn)在,就可以測試域名來判斷顧客的來源,分別進(jìn)行不同的反饋處理。if ($email_array[1]=="bigcustomer.com")    $toaddress = "bob@bobsdomain.com";else    $toaddress = "feedback@bobsdomain.com";注意:如果域名是大寫的或者大小寫混合的,這個(gè)函數(shù)就無法正常使用。這時(shí)可以通過將域名轉(zhuǎn)換成全是大寫或小寫的方法來避免這個(gè)問題,然后再按如下所示方法進(jìn)行檢查是否匹配。if (strtolower($email_array[1])=="bigcustomer.com")       $toaddress = "bob@bobsdomain.com";else       $toaddress = "feedback@bobsdomain.com";

使用implode()或join()函數(shù)可以實(shí)現(xiàn)與函數(shù)explode()相反的效果,這兩個(gè)函數(shù)的效果是一致的。例如:$new_email = implode("@", $email_array);以上代碼是從$email_array中取出數(shù)組元素,然后用第一個(gè)傳入的參數(shù)字符將它們連接在一起。這個(gè)函數(shù)的調(diào)用同explode()十分相似,但效果卻相反。與函數(shù)explode()每次都將一個(gè)字符串全部分割成若干小塊不同,strtok()函數(shù)一次只從字符串中取出一些片段。對于一次從字符串中取出一個(gè)單詞的處理來說,strtok()函數(shù)比explode()函數(shù)的效果更好。

strtok()函數(shù)的基本語法如下:string strtok(string input, string separator);

分隔符可以是一個(gè)字符,也可以是一個(gè)字符串,但是,需要注意的是,輸入的字符串會根據(jù)分隔符字符串中的每個(gè)字符來進(jìn)行分割,而不是根據(jù)整個(gè)分隔字符串來分隔。

調(diào)用函數(shù)strtok()并不是那么簡單。為了從字符串中得到第一個(gè)片段,可以調(diào)用strtok()函數(shù),并帶有兩個(gè)輸入?yún)?shù):一個(gè)是要進(jìn)行片段化處理的字符串,還有一個(gè)就是分隔符。為了從字符串中得到片段序列,可以只用一個(gè)參數(shù)(分隔符),該函數(shù)會保持它自己的內(nèi)部指針在字符串中的位置。如果想重置指針,可以重新將該字符串傳給這個(gè)函數(shù)。

【示例2】使用strtok()函數(shù)獲取字符串片段。$token = strtok($feedback, " ");echo $token."<br>";while ($token!=""){    $token = strtok(" ");    echo $token."<br>";};

通常,使用像empty()這樣的函數(shù)來檢查顧客是否在表單中真正輸入了反饋信息。在上面代碼中,將顧客反饋中的每個(gè)片段打印在每一行上,并一直循環(huán)到不再有字符片段。在這個(gè)過程中,空字符串將被自動跳過。使用substr()函數(shù)可以訪問一個(gè)字符串給定起點(diǎn)和終點(diǎn)的子字符串。當(dāng)需要得到某個(gè)固定格式字符串中的一部分時(shí),它會非常有用。substr()函數(shù)的基本語法如下:string substr(string string, int start, int [length] );這個(gè)函數(shù)將返回字符串的子字符串副本。

【示例3】使用substr()函數(shù)截取字符串。$test = "Your customer service is excellent";substr($test, 1);

如果只用一個(gè)正數(shù)作為子字符串起點(diǎn)來調(diào)用這個(gè)函數(shù),將得到從起點(diǎn)到字符串結(jié)束的整個(gè)字符串。上面示例將返回“our customer service is ex-cellent”。注意,字符串的起點(diǎn)和數(shù)組一樣是從零開始的。

【示例4】如果只用一個(gè)負(fù)數(shù)作為子字符串起點(diǎn)來調(diào)用它,將得到一個(gè)原字符串尾部的一個(gè)子字符串,字符個(gè)數(shù)等于給定負(fù)數(shù)的絕對值。例如:$test = "Your customer service is excellent";substr($test, -9);

上面代碼將返回“excellent”。length參數(shù)可以用于指定返回字符的個(gè)數(shù)(如果它是正數(shù)),或是字符串序列的尾部(如果它是負(fù)數(shù))。例如:substr($test, 0, 4);將返回字符串的前4個(gè)字符,即“Your”。下面的代碼:echo substr($test, 4, -13);將返回從第4個(gè)到倒數(shù)第13個(gè)字符,即“cus-tomer service”,第1個(gè)字符的位置為0,因此位置5就是第6個(gè)字符。


網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷咨詢專線:0871-63535511(點(diǎn)擊可一鍵撥號)