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
答案 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
(===)