代码改变世界

第四章 字符串操作与正则表达式(3)

2016-07-27 18:59  yojiaku  阅读(211)  评论(0编辑  收藏  举报

4.3 用字符串函数连接和分割字符串

  1.使用explode(), implode(), join()

    explode():array explode(string $delimiter, string input [, int limit]);

          delimiter: the boundary string(分隔符==separator)

          string input: 输入字符串(即要分割的字符串)

          limit: 可选参数,用于限制分成字符串小块的数量

          整体意思:explode()函数带有一个输入字符串做参数(第二个参数),并根据一个指定的分隔符字符串(第一个参数)将字符串本身分割成小块,将分割后的小块返回到一个数组(array)中,且可以通过可选的参数limit来限制分成字符串小块的数量。

          举例1:我们要想通过顾客的电子邮件地址获得域名,可以使用如下代码

              $email_array = explode('@', $email);

              在这里,我们调用函数explode()将顾客的电子邮件地址用@符号分割成两个部分:用户名称-xxx,它保存在数组$email_array[0]中;域名-(例如:qq.com),它保存在数组$email_array[1]中。然后,我们就可以测试域名来判断顾客的来源,然后将反馈送到合适的人那里:

              

if($email_array[1] == "bigcustomer.com"){
    $toaddress = "bob@example.com";
}else{
    $toaddress = "feedback@example.com";
}

              注意:如果域名是大写或者大小写混合,这个函数就无法正常使用。--我们可以通过转化大小写的方法来避免这个问题:strtolower($email_array[1])

          举例2: 

#explode()
$pizza  = "yojiaku@qq.com";
$pieces = explode("@", $pizza);
echo $pieces[0]; 
echo "<br />";
echo $pieces[1]; 

        打印结果:

    join():与explode的作用相反,从字面意思也可以理解,explode是分裂,join则是连接,join函数还跟implode函数的作用一样。

  2.使用strtok()函数

    与explode()函数每次都将字符串分成一小块块不同,strtok()函数只从字符串中取出一些片段(称为令牌)。对于一次从字符串中取出一个单词的处理来说,strtok()函数比explode()函数的效果好。

    strtok():有两种原型:【1】string strtok(string $str, string $token);【2】string strtok(string $token);

          str:string input

          token: separator

          注意:输入的字符串会根据分隔字符串中的每个字符来进行分割,而不是根据整个分隔字符串来分割。

          举例:

$string = "This is\tan example\nstring";
/* Use tab and newline as tokenizing characters as well  */
$tok = strtok($string, " \n\t");

while ($tok !== false) {
    echo "Word=$tok<br />";
    $tok = strtok(" \n\t");
}

          打印结果:

    3.使用substr()函数

      substr():string substr(string string, int start[, int length]);允许访问一个字符串给定起点和重点的字符串。一般用来得到某个固定格式字符串中的一部分。

          举例:

#substr()
$test = "Your customer service is excellent";
echo substr($test, 1);

          打印结果:

          解释:字符串的起点和数组一样是从0开始计的,所以这个示例是从第二个字母(o)开始打印;如果我们只使用一个负数来作为子字符串起点来调用它,将得到一个源字符串尾部的一个子字符串,字符个数等于给定负数的绝对值。