PHP 中的字符串分词器

发布于 2024-10-30 17:34:18 字数 266 浏览 0 评论 0原文

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

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

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

}

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

我应该怎么办?

I've a strange problem that I faced recently.
I've the following code to tokenize string in php:

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

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

}

The simple problem I've got is that I'm parsing file which contains many numbers, so in this case 0 will be read as false. So, parsing can't be completed.

What should I do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

|煩躁 2024-11-06 17:34:18

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

while ($token !== false)

If you read the manual page of [**`strtok()`**][2], you'll see the following note *(quoting)* :

该函数可能返回布尔值
FALSE,但也可能返回
非布尔值,其计算结果为
FALSE,例如 0""

请阅读以下部分
布尔值了解更多信息。
使用=== 运算符 对于
测试这个的返回值
功能。

Using `!==` instead of `!=` will make sure there is no type-conversion done.

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

You should use the !== operator, to compare $token to false :

while ($token !== false)

If you read the manual page of [**`strtok()`**][2], you'll see the following note *(quoting)* :

This function may return Boolean
FALSE, but may also return a
non-Boolean value which evaluates to
FALSE, such as 0 or "".

Please read the section on
Booleans for more information.
Use the === operator for
testing the return value of this
function.

Using `!==` instead of `!=` will make sure there is no type-conversion done.

For instance, 0 == false ; but 0 !== false.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文