<? php
 if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
    echo '正在使用 Internet Explorer。<br />';
}
?> 
对 strpos() 函数的调用。strpos() 是 PHP 的一个内置函数,其功能是在一个字符串中搜索另外一个字符串。例如我们现在需要在 $_SERVER['HTTP_USER_AGENT'](即所谓的 haystack)变量中寻找 'MSIE'。如果在这个 haystack 中该字符串(即所谓的 needle)被找到,则函数返回 needle 在 haystack 中相对开头的位置;如果没有,则返回 FALSE。如果该函数没有返回 FALSE,则 if 会将条件判断为 TRUE 并运行其花括号 {} 内的代码;否则,则不运行这些代码。我刚学PHP 这里的 haystack,msie,needle 指的是什么?我认为是不是在 $_SERVER['HTTP_USER_AGENT'] 输出的字符串里找 MSIE ? 就返回 mise 在那字符串的开头位置

解决方案 »

  1.   

    存在返回要查找的字符在字符串中的起始位置,不存在返回false。
    建议这样写if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')) { 
            echo '正在使用 Internet Explorer。 <br />';
    }
      

  2.   

    这个基本上是一个菜到家的问题 你的问题不是如何理解这个函数 而是如何学习
    1、strpos 手册在这里 http://cn.php.net/manual/en/function.strpos.php
    int strpos  ( string $haystack  , mixed $needle  [, int $offset= 0  ] )
    这里的参数命名确实很不通用 起码对英文不好的人来说
    在词霸里找到一个句子 “a needle in a haystack”落进草垛里的一根针(比喻很难找的东西)
    2、$_SERVER 手册在这 http://cn.php.net/manual/en/reserved.variables.server.php
    Server and execution environment information
    服务器或运行时相关的一些环境信息
    3、'MSIE' 
    这个不需要解释了 '被引号框起来的只是一个字符串而已'
    至于MSIE 这个要理解了 UserAgent 才可以,建议你去搜下
    所以,多看多试多搜 其次才是提问然后茫然的等待...
    php.net 下面网友回复很有价值 建议看看
    @zhoupuyue  strpos(..)!== FALSE
    如果被查找的字符出现在开始的位置 strpos 的返回值为 0 ,而不代表没有找到