PHP 中的字符串分词器


String tokenizer in php

我最近遇到了一个奇怪的问题。
我有以下代码在 php 中标记字符串:

$token = strtok($string, "#"(;

while ($token != false)
{
    echo $token;
    $token = strtok("#");
}

遇到的简单问题是我正在解析包含许多数字的文件,因此在这种情况下,0 将被读取为 false。因此,无法完成解析。

我该怎么办?

您应该使用 !== 运算符将$tokenfalse进行比较:

while ($token !== false)


如果您阅读strtok()的手册页,您将看到以下注释(引用(:

此函数可能会返回布尔值 FALSE,但也可能返回 计算结果为 FALSE,如0""
请阅读有关 布尔值以获取更多信息。 使用 === 运算符 测试此的返回值 功能。


使用 !== 而不是 != 将确保不进行类型转换。

例如,0 == false ; 但0 !== false