• 技术文章 >后端开发 >PHP问题

    php怎么检测子字符串是否存在

    青灯夜游青灯夜游2022-10-19 18:10:33原创791

    4种方法:1、用stripos()查找子串的出现位置,语法“stripos($str,$find)”;2、用strripos()查找子串的的出现位置,语法“strripos($str,$find)”;3、用strpos()查找子串的出现位置,语法“strpos($str,$find)”;4、用strrpos()查找子串的出现位置,语法“strrpos($str,$find)”。

    php入门到就业线上直播课:进入学习

    本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑

    在进行字符串查找操作时,有时会要求在某一字符串中查找指定的子字符串(简称子串),看看该子串是否存在于这个字符串中。

    我们一般会通过使用PHP内置函数来查找这个子串在字符串的第一次或最后一次的出现位置来进行判断。而查找字符串有两种情况:一种是对大小写不敏感,即不区分大小写的查找;另外一种是对大小写敏感,即区分大小写的查找。

    情况一:判断子串是不是存在(大小写不敏感)

    大小写不敏感的检测子串是不是存在,需要使用stripos()和strripos()函数。

    stripos()和strripos()函数都可以大小写不敏感的检查指定子串的出现位置,如果返回值为FALSE,则指定子串不存在。

    因此我们就可以使用以下代码来判断子串是不是存在

    <?php
    header("Content-type:text/html;charset=utf-8");
    $string = "ABCDCBAbcd";
    $findme = "bC";
    
    if(stripos($string, $findme)!=FALSE){
    	echo "子串  “'$findme'” 在字符串  “'$string'” 中存在。";
    }else{
    	echo "子串  “'$findme'” 在字符串  “'$string'” 中不存在。";
    }
    
    if(strripos($string, $findme)!=FALSE){
    	echo "<br>子串  “'$findme'” 在字符串  “'$string'” 中存在。";
    }else{
    	echo "<br>子串  “'$findme'” 在字符串  “'$string'” 中不存在。";
    }
    ?>

    输出结果:

    2.png

    说明:stripos()和strripos()函数

    stripos($string,$find,$start)函数可以查找字符串在另一字符串中第一次出现的位置(不区分大小写)。

    strripos($string,$find,$start)函数可以查找字符串在另一字符串中最后一次出现的位置(不区分大小写)。

    这两个函数的参数是相似的,都接受两个必需参数$string$find,一个可省略参数$start

    情况2:检测子串是不是存在(大小写敏感)

    大小写敏感的检测子串是不是存在,需要使用strpos()和strrpos()函数。

    strpos()和strrpos()函数可以大小写敏感的检查指定子串的出现位置,如果返回值为FALSE,则指定子串不存在。

    示例:

    <?php
    header("Content-type:text/html;charset=utf-8");
    $string = "ABCDCBAbcd";
    $findme1 = "bC";
    $findme2 = "bc";
    $pos1 = strpos($string, $findme1);
    $pos2 = strrpos($string, $findme1);
    $pos3 = strpos($string, $findme2);
    $pos4 = strrpos($string, $findme2);
    
    if($pos1 !=FALSE){
    	echo "子串 '$findme1' 在字符串  '$string' 中存在。";
    }else{
    	echo "子串  '$findme1' 在字符串  '$string' 中不存在。";
    }
    
    if($pos2 !=FALSE){
    	echo "<br>子串  '$findme1' 在字符串  '$string' 中存在。";
    }else{
    	echo "<br>子串  '$findme1' 在字符串  '$string' 中不存在。";
    }
    if($pos3 !=FALSE){
    	echo "<br>子串  '$findme2' 在字符串  '$string' 中存在。";
    }else{
    	echo "<br>子串  '$findme2' 在字符串  '$string' 中不存在。";
    }
    
    if($pos4 !=FALSE){
    	echo "<br>子串  '$findme2' 在字符串  '$string' 中存在。";
    }else{
    	echo "<br>子串  '$findme2' 在字符串  '$string' 中不存在。";
    }
    ?>

    strpos()和strrpos()函数会区分大小写的在字符串$string中查找子串$findme1或者$findme2。当完全匹配上,存在子串时,会返回子串在字符串的第一次或最后一次的出现位置;如果在字符串的没有找到子串,则返回FALSE

    从上面的例子可以看出,只有子串"bc"和字符串“ABCDCBAbcd”是完全匹配,子串"bc"被认为是存在于字符串“ABCDCBAbcd”中的。因此输出结果为:

    4.png

    说明:strpos()和strrpos()函数

    strpos()和strrpos()函数相似,都接受两个必需参数$string(被查找的字符串)和$find(要查找的子串),一个可省略参数$start(查找的开始位置)。注:字符串位置起始于 0,而不是 1。

    <?php
    header("Content-type:text/html;charset=utf-8");
    $string = "ABCabcabcABC";
    $findme1 = "c";
    $findme2 = "C";
    echo "子串  '$findme1' 第一次出现的位置:".strpos($string, $findme1);
    echo "<br>子串  '$findme1' 最后一次出现的位置:".strrpos($string, $findme1);
    echo "<br>子串  '$findme2' 第一次出现的位置:".strpos($string, $findme2);
    echo "<br>子串  '$findme2' 最后一次出现的位置:".strrpos($string, $findme2);
    ?>

    输出结果:

    5.png

    推荐学习:《PHP视频教程

    以上就是php怎么检测子字符串是否存在的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php php字符串
    上一篇:php怎么让数组只保留键名 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• php字符串怎么替换第一个字符后面的字符• php字符串怎么替换1个字符• php字符串怎么移除前4个字符• php字符串不足怎么补0• php字符串怎么去除第一个字符• php字符串怎么只保留字母
    1/1

    PHP中文网