4.3.2 使用strtok()函数

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

strtok()函数的原型如下所示:


string strtok(string input,string separator);


分隔符可以是一个字符,也可以是一个字符串,但是,需要注意的是,输入的字符串会根据分隔符字符串中的每个字符来进行分割,而不是根据整个分隔字符串来分隔(就像explode()函数一样)。

函数strtok()的调用并不像它的函数原型中那样简单。为了从字符串中得到第一个令牌,可以调用strtok()函数,并带有两个输入参数:一个是要进行令牌化处理的字符串,还有一个就是分隔符。为了从字符串中得到令牌序列,可以只用一个参数——分隔符。该函数会保持它自己的内部指针在字符串中的位置。如果想重置指针,可以重新将该字符串传给这个函数。

strtok()函数的典型应用如下所示:


$token=strtok($feedback,'"");

echo$token."<br/>";

while($token!=""){

$token=strtok("");

echo$token."<br/>";

}


通常,使用像empty()这样的函数来检查顾客是否在表单中真正输入了反馈信息,是一个非常不错的主意。为了简洁起见,我们将不对这些检查进行详细介绍。

以上代码将顾客反馈中的每个令牌打印在每一行上,并一直循环到不再有令牌。在这个过程中,空字符串将被自动跳过。