Php strrpos检测不到字符串,始终为0位置

时间:2012-01-05 18:02:03

标签: php string foreach strpos

大家好,这真是令人惊叹的问题。

我对strrpos有很多经验,但这确实是不合时宜的。首先是数组:

arrCopy => {                
  ["Codice"]=>                
  string(33) "Per sport d è numerico"                
  ["Maniche"]=>                
  string(15) " maniche corte "                
  ...               
  ["Taglia"]=>                
  string(8) "tg tg XL"                
}

我想在Foreach循环中隔离“Taglia”的行为,但我无法检测到它!

foreach ($arrCopy as $key=>$spec){
         echo gettype($key); // prints string
         $tg= strpos(strtolower($key) , 'taglia'); // gives me 
//always 0 also with "Taglia" key
            if (  $tg !== false || ....
                 // never goes there

我哪里错了?

1 个答案:

答案 0 :(得分:2)

你应该测试strpos()的retval与FALSE,以确定是否包含字符串。

来自http://php.net/manual/en/function.strpos.php

  

此函数可能返回布尔值FALSE,但也可能返回一个非布尔值,其值为FALSE,例如0或“”。有关更多信息,请阅读有关布尔值的部分。使用===运算符测试此函数的返回值。

使用strcmp可能更好 - 你没有那么多尝试找到子串,以确保匹配。