1
function check($text){
  if(strpos('a', $text) == FALSE && strpos('b', $text) == FALSE){
    echo 'error';
  } else {
    echo 'ok';
  }
}

echo check('text') . "\n";
echo check('asd') . "\n";
echo check('bnm') . "\n";
echo check('test') . "\n";
echo check('abc') . "\n";

直播:http ://codepad.org/W025YYuH

为什么这不起作用?这个回报:

1 错误 2 错误 3 错误 4 错误 5 错误

但应该是:

1 错误 2 正常 3 正常 4 错误 5 正常

4

3 回答 3

6

如文档中所述,您应该使用=== FALSE而不是== FALSE

此外,您的论点顺序错误。再次,查阅文档(或者,如某些人所说,RTM)

于 2013-06-08T15:54:01.310 回答
2

反转参数的位置,第一个参数是字符串,第二个参数是你在字符串中搜索什么。

strpos ( 'The string to search in' ,'the argument of search' )

然后 == 将无法按预期工作,因为 'a' 的位置是第 0 个(第一个)字符。

尝试这个:

function check($text){
  if(strpos($text, 'a') === FALSE && strpos($text, 'b') === FALSE){
    echo 'error';
  } else {
    echo 'ok';
  }
}

echo check('text') . "\n";
echo check('asd') . "\n";
echo check('bnm') . "\n";
echo check('test') . "\n";
echo check('abc') . "\n";
于 2013-06-08T15:54:27.490 回答
1

你把arfuments弄错了,改为:

 if(strpos($text, 'a') === FALSE && strpos($text, 'b') === FALSE){

另请注意,您需要false使用相同的运算符 (===)检查布尔值

于 2013-06-08T15:53:43.230 回答