通常,我们想查看字符串的各个部分。例如,查看句子中的单词(例如,拼写检查),或者要将一个域名或电子邮件地址分割成一个个的组件部分。PHP提供了几个字符串函数(和一个正则表达式函数)来实现此功能。
在我们的例子中,Bob想让顾客的反馈信息直接从bigcustomer.com提交到他那里,所以,可以将客户输入的电子邮件地址分割为几个部分,以便判断是否为大客户。
4.3.1 使用函数explode、implode和join
为了实现这个功能,我们将使用的第一个函数是explode,它的函数原型如下所示:
array explode(string separator,string input[,int limit]);
这个函数带有一个输入字符串作为参数,并根据一个指定的分隔符字符串将字符串本身分割为小块,将分割后的小块返回到一个数组中。可以通过可选的参数limit来限制分成字符串小块的数量。
要在我们的脚本中通过顾客的电子邮件地址获得域名,可以使用如下所示的代码:
$email_array=explode('@',$email);
在这里,调用函数explode将顾客的电子邮件地址分割成两部分:用户名称,它保存于$email_array[0]中,而域名则保存在$email_array[1]中。现在,我们已经可以测试域名来判断顾客的来源,然后将他们的反馈送到合适的人那里:
if($email_array[1]=="bigcustomer.com"){
$toaddress="[email protected]";
}else{
$toaddress="[email protected]";
}
然而请注意,如果域名是大写的或者大小写混合的,这个函数就无法正常使用。你可以通过将域名转换成全是大写或小写的方法来避免这个问题,然后再按如下所示方法进行检查是否匹配:
if(strtolower($email_array[1])=="bigcustomer.com"){
$toaddress="[email protected]";
}else{
$toaddress="[email protected]";
}
使用implode或join函数来实现与函数explode相反的效果,这两个函数的效果是一致的。例如:
$new_email=implode('@',$email_array);
以上代码是从$email_array中取出数组元素,然后用第一个传入的参数字符将它们连接在一起。这个函数的调用同explode十分相似,但效果却相反。