在做網(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)在,就可以測(cè)試域名來判斷顧客的來源,分別進(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ù)一次只從字符串中取出一些片段。對(duì)于一次從字符串中取出一個(gè)單詞的處理來說,strtok()函數(shù)比explode()函數(shù)的效果更好。
strtok()函數(shù)的基本語法如下:string strtok(string input, string separator);
分隔符可以是一個(gè)字符,也可以是一個(gè)字符串,但是,需要注意的是,輸入的字符串會(huì)根據(jù)分隔符字符串中的每個(gè)字符來進(jìn)行分割,而不是根據(jù)整個(gè)分隔字符串來分隔。
調(diào)用函數(shù)strtok()并不是那么簡(jiǎn)單。為了從字符串中得到第一個(gè)片段,可以調(diào)用strtok()函數(shù),并帶有兩個(gè)輸入?yún)?shù):一個(gè)是要進(jìn)行片段化處理的字符串,還有一個(gè)就是分隔符。為了從字符串中得到片段序列,可以只用一個(gè)參數(shù)(分隔符),該函數(shù)會(huì)保持它自己的內(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è)過程中,空字符串將被自動(dòng)跳過。使用substr()函數(shù)可以訪問一個(gè)字符串給定起點(diǎn)和終點(diǎn)的子字符串。當(dāng)需要得到某個(gè)固定格式字符串中的一部分時(shí),它會(huì)非常有用。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ù)的絕對(duì)值。例如:$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è)字符。
當(dāng)前文章標(biāo)題:連接和分割字符串
當(dāng)前URL:http://51zuanshi.com.cn/news/wzzz/3281.html
上一篇:格式化字符串
下一篇:比較字符串