PHP strtok() 如果我理解正确,请告诉我


PHP strtok() Please let me know if I understand this right

这是代码:

<?php
    $string = 'Hey there buddy';
    $token = strtok($string, ' ');
    while($token !== false)
    {
        echo $token."<br/>";
        $token = strtok(' ');
    }
?>

只想知道我是否理解这一点。以下是我对 strtok() 的看法。要使用 strtok(),首先,您必须将其设置为带有输入字符串(在本例中为 $string)和分隔符(在本例中为 ' ')的变量(在本例中为 $token)。然后你必须在 while 循环中再次使用它,但这次只指定一个分隔符而不是输入字符串,因为在我们第一次使用它时它已经连接到变量$string。我说的对吗?

是的,strtok保留了第一个人口的内部缓冲区$string .它随后返回其中的一部分;每当你传递它时,只有一个新角色可以与之分裂。

你可以用一个do/while结构缩短你的循环,顺便说一句:

do {
    echo $token."<br/>";
}
while (is_str($token = strtok(' ')));

然而,这也是strtok的缺点。由于它适用于全局内部字符串缓冲区,因此您只能使用一个这样的循环 - 它不适合并行分隔子字符串或在另一个缓冲区上工作。

虽然当你只是用一个分隔符拆分时,你不妨使用 PHP 最过度使用的函数:explode