如何在PHP中使用strpos?

时间:2013-06-08 15:52:09

标签: php

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 ok 3 ok 4错误5 ok

3 个答案:

答案 0 :(得分:6)

您应该使用=== FALSE代替== FALSE,如documentation

中所述

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

答案 1 :(得分: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";

答案 2 :(得分:1)

你有错误的方式,改为:

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

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