【发布时间】:2017-05-10 08:43:42
【问题描述】:
我正在使用strtok() 函数对字符串进行标记,并了解token 可能是falsey 值,因此必须将其与=== / !== 进行比较以进行布尔检查。
但是我遇到了token 永远不会评估为false 的情况
<?php
$str = "Lorem ipsum dolor sit amet, 0 consectetur adipiscing elit. Donec ullamcorper quam sit amet maximus ornare. Proin dignissim ante eu finibus faucibus. Proin fringilla consequat metus, et imperdiet purus interdum ut. Donec efficitur convallis nisl at luctus. Duis maximus, orci ac congue volutpat, urna nisi dictum nulla, nec auctor tellus libero vel sapien. Nam scelerisque nibh mi, sed posuere libero tincidunt sit amet. Mauris blandit nulla at volutpat dapibus. Donec ac libero sollicitudin, cursus dolor nec, cursus quam.";
$delimiters = " \n\t.,?!;:";
$word = strtolower(strtok($str, $delimiters));
while ($word !== false) {
echo "|" . $word . "|" . "\n";;
$word = strtolower(strtok($delimiters));
}
这里有一个损坏的例子https://3v4l.org/u35vL
【问题讨论】:
-
您将
strtolower的返回值而不是strtok的返回值分配给变量$word。不确定这是否是错误,但您是否尝试删除对strtolower的调用? -
@terencehill 你是对的,但是其他人已经发布了你的评论作为答案。
-
没关系。我不是 php 程序员,我只是猜到了错误,但不知道原因。答案正确地解决了问题和解决方案。但是感谢您的评论;)