PHP中strtok()函数的优点详细解析

网络整理 - 08-26

  相对于explode()来说,strtok()函数可以控制节奏。按需切割字串。其优点是:

  1、可以一次定义多个分隔符。函数在执行时,是按单个分隔符来切割,而不是按整个分隔符,而explode则是按整个分隔串来切割的。正因此,explode可以用中文切割,而strtok则不行,会乱码。

  2、在使用while或for配合strtok()遍历时,可以随时更换分隔符,也可以随时用break跳出终止切割。

  示例1:演示用中文+explode来切割

  $string = "这是PHP论坛 论坛版块 论坛栏目 论坛H管理员 论坛会员";

  $arr = explode("论坛",$string);

  foreach($arr as $v)

  {

  echo $v."<br />";

  }

  echo "-------------<br />";

  返回:

  这是PHP

  版块

  栏目

  H管理员

  会员

  -------------

  示例2:演示更换切割符,注意后面WHILE中不再带有“H”分隔符。而只是用空格。

  $string = "这是PHP论坛 论坛版块 论坛栏目 论坛H管理员 论坛会员";

  $tok = strtok($string, " H"); //空格+H

  $n=1;

  while ($tok !== false) {

  echo "$tok<br />";

  $tok = strtok(" "); //空格

  //if($n>2)break; //可以随时跳出。

  //$n++;

  }

  echo "-------------<br />";

  返回:

  这是P

  P论坛

  论坛版块

  论坛栏目

  论坛H管理员

  论坛会员

  -------------

  示例3:演示多分隔符。

  $string = "This istan examplenstring";

  $tok = strtok($string, " nt"); #空格,换行,TAB

  while ($tok !== false) {

  echo "$tok<br />";

  $tok = strtok(" nt");

  }

  echo "-------------<br />";

  返回:

  This

  is

  an

  example

  string

  -------------

  $string = "abcde 123c4 99sadbc99b5232";

  $tok = strtok($string, "bc");

  while ($tok !="") {

  echo "$tok<br />";

  $tok = strtok("bc");

  }

  echo "-------------<br />";

  返回:

  a

  de 123

  4 99sad

  99

  5232

  -------------

  示例4:演示用for来遍历:

  $line = "leontatkinsontleon@clearink.com";

  for($token = strtok($line,"t");$token!="";$token=strtok("t"))

  {

  print("token: $token<BR>n");

  }

  返回:

  token: leon

  token: atkinson

  token: leon@clearink.com