PHP:IF语句独立工作,但不在WHILE循环中

时间:2011-04-24 23:29:50

标签: php if-statement while-loop strtok

问题:

假设我在搜索框中输入了$ keyword =一个句子,例如“大白框”

我需要做的是将其分解为单个单词,然后测试每个单词以确保*不出现在前3个字母中。 (所以,sen *会好的,但是se *会不会好的)。如果*确实出现在任何单个单词的前3个字母中,那么“if($ keyword)...”过程需要结束。

if ($keyword)  {


            $token = strtok($keyword, " ");
                while ($token != false) {
                    echo $token;
                        if (stripos($token,"*") < 3 ) {
                        return;
                        }
                    $token = strtok(" ");
                    }

...代码继续......

正如你所看到的,我每次都回应它看待处理。

如果我删除'if'代码,那么它会输出'largewhiteboxes'并按预期继续。

如果我按原样保留'if'代码,则仅输出'large',并且例程结束 - 即使条件未满足!

如果我在WHILE循环之外单独运行'if'语句,它可以正常工作,在前3个位置对*做出响应,对其他所有位置都为false ...

我可能做错了什么???

2 个答案:

答案 0 :(得分:2)

你应该注意giant red warning in the documentation for stripos

换句话说,在检查是否为!== false之前,您需要检查返回值< 3

顺便说一下,为什么在strtok可用时你会为explode(',', $keyword)而烦恼?

答案 1 :(得分:0)

这种变化似乎有效。

$keyword = "large white boxes";

$token = strtok($keyword, " ");

while ($token !== false) {
    echo $token;
    $pos = stripos($token, "*");
    if ($pos < 3 && $pos !== false) {
        return;
    }
    $token = strtok(" ");
}
相关问题