学习php使用strpos() 函数判断字符串中是否包含某字符的方法详解

php使用strpos函数判断字符串中是否包含某字符的方法详解

strpos定义和用法

strpos() 函数查找字符串在另一字符串中第一次出现的位置。

注释:strpos() 函数对大小写敏感。

注释:该函数是二进制安全的。

相关函数

stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)

语法

strpos(string,find,start)

参数描述
string必需。规定要搜索的字符串
find必需。规定要查找的字符串
start可选。规定在何处开始搜索

技术细节

返回值详解
0返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。

注释:字符串位置从 0 开始,不是从 1 开始。 |

踩坑实例



    $a = 'abcd';

    $b = 'b';

    $c = 'a';

    echo strpos($a,$b) ? '原来是兄弟<br/>' : '非我族类,砍ta<br/>';

    echo strpos($a,$c) ? '原来是兄弟<br/>' : '非我族类,砍ta<br/>';

    echo strpos($a,$c)!=false ? '原来是兄弟' : '非我族类,砍ta';


结果显示:

原来是兄弟
非我族类,砍ta
非我族类,砍ta

$c 命名是$a的一部分,结果当成异类,连着被砍了两次,冤枉

防坑攻略

stripos()返回的是字符串在另一个字符串出现的位置,而这个位置是从0开始计算的。 c 在 c在 ca中出现的位置是0,因此被砍。

所以,正确的判断应该是:


    $a = 'abcd';
    $c = 'a';
    echo strpos($a,$c)!==false ? '原来是兄弟' : '非我族类,砍ta';

返回值

以整型返回位置信息。如果没找到要查询的字符串,strpos() 将返回布尔型的 FALSE 值。

也就是说,此函数可能返回布尔值 FALSE,但也可能返回等同于 FALSE 的非布尔值,例如 0 或 “”(空串)。因此,在判断的时候,需要使用恒等于’=‘或者恒不等于’=‘来判断,千万不能省去一个’=‘号。

strpos和strstr区别

判断一个字符串是否在另一个字符串中还有一个函数:strstr()。与strpos()有一点不同是,该函数的返回值是false或者字符串的一部分。如果单纯的判断两个字符串的包含关系,最好使用strpos,因为速度更快、耗费内存更少。

strpos用法扩展

实现匹配关键词,加粗标红高亮

$str_ay = ['我的签约的合同包含qipa', '奇葩和qipa都有合作', '只合作了天地', '我是qipa250', '奇葩-250呀', '啥也不是'];

echo "str_ay<pre>";
print_r($str_ay);

$remark_ay = ['奇葩', 'qipa', '250'];
$remark_list = [];
foreach ($str_ay as $strk => $strv) {
    $res_title_key = $strv;
    foreach ($remark_ay as $rmk => $rmv) {
        if (strpos($strv, $rmv) === false) {
            //echo $strv . "不包含" . $rmv . '<br>';
            continue;
        }
        //加粗标红
        $red_key = "<b style='color:#FF0000'>" . $rmv . "</b>";
        $res_title_key = str_ireplace($rmv, $red_key, $res_title_key);
        //赋值给数组
        $remark_list[$strk] = $res_title_key;
    }
}

echo "remark_list<pre>";
print_r($remark_list);

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值