zoukankan      html  css  js  c++  java
  • strpos 的正确使用方式

    首先简单介绍下strpos函数;

    strpos函数是查找某个字符在字符串中的位置;这里需要明确这个函数的作用;

    这个函数得到的是位置;如果存在;返回数字;否则返回的是false;

    而很多时候我们拿这个函数用来判断字符串中是否存在某个字符;

    一些同学使用的姿势是这样的;

    // 判断‘白俊遥博客’中是否存在‘博客’这个词  
    if (strpos('白俊遥博客', '博客')) {  
        // 如果存在执行此处代码  
        echo '存在';  
    }else{  
        // 如果不存在执行此处代码  
        echo '不存在';  
    }  

    这段代码输出的是'存在';没什么问题;但是再看下面这段代码;

    // 判断‘白俊遥博客’中是否存在‘白’这个字  
    if (strpos('白俊遥博客', '白')) {  
        // 如果存在执行此处代码  
        echo '存在';  
    }else{  
        // 如果不存在执行此处代码  
        echo '不存在';  
    }  

    输出了'不存在';原因是因为 '白' 在 '白俊遥博客' 中的第0个位置;而0在if中表示了false;

    所以;如果用strpos来判断字符串中是否存在某个字符时必须使用===false 、必须使用===false 、必须使用===false

    重要的事情说三遍;正确的使用方式如下;

    // 判断‘白俊遥博客’中是否存在‘博客’这个词  
    if (strpos('白俊遥博客', '博客')===false) {  
        // 如果不存在执行此处代码  
        echo '不存在';  
    }else{  
        // 如果存在执行此处代码  
        echo '存在';  
    }  

    你以为用上了===你就得到了strpos的整个世界?no;no;no;

    这家伙还有个隐藏坑;我来换个词;

    // 判断‘白俊遥博客1’中是否存在‘1’这个数字  
    if (strpos('白俊遥博客1', 1)===false) {  
        // 如果不存在执行此处代码  
        echo '不存在';  
    }else{  
        // 如果存在执行此处代码  
        echo '存在';  
    }  

    如果你脑算出来的上面这段代码输出的是‘存在’;

    那你这完全没跟上我的套路啊;不是技能的问题了;

    是时候为智商讨个说法了;

    事实上输出的是'不存在';细心的童鞋会发现这个1 是不带引号的;

    strpos的第二个参数必须是字符串型的;

    因此;如果你是在循环或者其他情况下调用的strpos函数;而且不确定第二个参数的类型;

    那么保险的方式是用strval把它转字符串类型了:

    // 判断‘白俊遥博客1’中是否存在‘1’这个数字  
    $haystack='白俊遥博客1';  
    $needle=1;  
    if (strpos($haystack, strval($needle))===false) {  
        // 如果不存在执行此处代码  
        echo '不存在';  
    }else{  
        // 如果存在执行此处代码  
        echo '存在';  
    }  
    <?php
    header('content-type:text/html;charset=utf8'); // 判断‘白俊遥博客’中是否存在‘博客’这个词 if (strpos('白俊遥博客', '博客')) { // 如果存在执行此处代码 echo '存在'; }else{ // 如果不存在执行此处代码 echo '不存在'; } echo '<br>'; // 判断‘白俊遥博客’中是否存在‘白’这个字 if (strpos('白俊遥博客', '白')) { // 如果存在执行此处代码 echo '存在'; }else{ // 如果不存在执行此处代码 echo '不存在'; } echo '<br>'; // 判断‘白俊遥博客’中是否存在‘博客’这个词 if (strpos('白俊遥博客', '博客')===false) { // 如果不存在执行此处代码 echo '不存在'; }else{ // 如果存在执行此处代码 echo '存在'; } echo '<br>'; // 判断‘白俊遥博客1’中是否存在‘1’这个数字 if (strpos('白俊遥博客1', 1)===false) { // 如果不存在执行此处代码 echo '不存在'; }else{ // 如果存在执行此处代码 echo '存在'; } echo '<br>'; // 判断‘白俊遥博客1’中是否存在‘1’这个数字 $haystack='白俊遥博客1'; $needle=1; if (strpos($haystack, strval($needle))===false) { // 如果不存在执行此处代码 echo '不存在'; }else{ // 如果存在执行此处代码 echo '存在'; } /*最终输出结果 存在 不存在 存在 不存在 存在*/ ?>

  • 相关阅读:
    P2639 [USACO09OCT]Bessie的体重问题Bessie's We…
    P2871 [USACO07DEC]手链Charm Bracelet
    P1983 车站分级
    P1038 神经网络
    P1991 无线通讯网
    P1546 最短网络 Agri-Net
    P1197 [JSOI2008]星球大战
    P1004 方格取数
    P1111 修复公路
    pd_ds 之 hash
  • 原文地址:https://www.cnblogs.com/-mrl/p/7667151.html
Copyright © 2011-2022 走看看