PHP字符串函数之 strpos stripos strrpos strripos


  • strpos – 查找字符串首次出现的位置
  • stripos – 查找字符串首次出现的位置(不区分大小写)
  • strrpos – 计算指定字符串在目标字符串中最后一次出现的位置
  • strripos – 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)

strpos

查找字符串首次出现的位置

mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

在 PHP7 源码中该函数实现在string.c文件的1950行附近

参数说明

haystack
在该字符串中进行查找。
needle
如果 needle 不是一个字符串,那么它将被转换为整型并被视为字符的顺序值。
offset
如果提供了此参数,搜索会从字符串该字符数的起始位置开始统计
和 strrpos()、 strripos()不一样,这个偏移量不能是负数

返回值

成功:返回 needle 存在于 haystack 字符串起始的位置(独立于 offset)
失败:如果没找到 needle,将返回 FALSE。

注意

  1. 字符串位置是从0开始,而不是从1开始的
  2. 此函数可能返回布尔值 FALSE,但也可能返回等同于 FALSE 的非布尔值
    应使用 === 运算符或 !== 来测试此函数的返回值

示例

<?php
// 忽视位置偏移量之前的字符进行查找
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, 不是 0
?>
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme); //$pos = 0// 注意这里使用的是 ===。简单的 == 不能像我们期待的那样工作,
// 因为 'a' 是第 0 位置上的(第一个)字符。
if ($pos === false) {echo "没有找到字符串 '$findme' ";
} else {echo "字符串 '$findme' 在字符串 '$mystring' 中被发现"echo "在其中的位置是 $pos"; //$pos = 0
}
?>
<?php
$haystack = 'My name is Jay, age 28';
$needle   = 8;
var_dump(strpos($haystack, $needle));
/*
结果是 false,因为这里的 $needl是数字8,不是字符8,PHP会转成相应的ASII
8的ASII是 ^H, 自然是找不到的
*/
?>
<?php
$haystack = 'My name is Jay, age 28';
$needle   = 97;
var_dump(strpos($haystack, $needle));
/*
结果是 4,因为97的ASII是 字母a,
*/
?>

stripos

查找字符串首次出现的位置(不区分大小写)

mixed stripos ( string $haystack , string $needle [, int $offset = 0 ] )

在 PHP7 源码中该函数实现在string.c文件的2008行附近
该函数与 strpos 唯一的区别就是不区分大小写。其他可参考strpos

<?php
$haystack = 'My name is Jay, age 28';
$needle   = 'A';
var_dump(stripos($haystack, $needle));
/*
结果是 4
*/
?>

strrpos

计算指定字符串在目标字符串中最后一次出现的位置

mixed strrpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

在 PHP7 源码中该函数实现在string.c文件的2068行附近

参数说明

haystack
在该字符串中进行查找。
needle
如果 needle 不是一个字符串,那么它将被转换为整型并被视为字符的顺序值。
offset
如果提供了此参数,搜索会从字符串该字符数的起始位置开始统计,可以是负数

返回值

成功:返回 needle 存在于 haystack 字符串起始的位置(独立于 offset)
失败:如果没找到 needle,将返回 FALSE。

注意

  1. 字符串位置是从0开始,而不是从1开始的
  2. 此函数可能返回布尔值 FALSE,但也可能返回等同于 FALSE 的非布尔值
    应使用 === 运算符或 !== 来测试此函数的返回值

示例

<?php
$foo = "012345678901234567890123456789";//从尾部第 3 个位置开始查找,
//结果: int(27)
var_dump(strrpos($foo, '7', -3));//从尾部第 4 个位置开始查找,
//结果: int(17)
var_dump(strrpos($foo, '7', -4));//从第 20 个位置开始查找
//结果: int(27)
var_dump(strrpos($foo, '7', 20));//结果: bool(false)
var_dump(strrpos($foo, '7', 28));
?>
可能有同学对上面的 -3那个例子看不明白
为什么上面的 -3,查找到的'7',最后出现的位置仍然是27,而不是17
这个-3该怎么计算呢?
其实很简单,我们观察一下$foo, 长度为30,在C语言中用字符数组来存的话就是0到29
在PHP内部是使用$foo的长度30加上偏移-3等于27,然后在字符数组0到27中来查找。
0到27也就是字符串 0123456789012345678901234567,所以为'7'最后一次出现的位置是27

strripos

计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)

mixed strripos ( string $haystack , mixed $needle [, int $offset = 0 ] )

在 PHP7 源码中该函数实现在string.c文件的2137行附近
该函数与 strrpos 唯一的区别就是不区分大小写。其他可参考strrpos

<?php
$haystack = 'ababcd';
$needle   = 'aB';
$pos      = strripos($haystack, $needle);if ($pos === false) {echo "Sorry, we did not find ($needle) in ($haystack)";
} else {//结果找到了,位置为2echo "Congratulations!\n";echo "We found the last ($needle) in ($haystack) at position ($pos)";
}
?>

PHP字符串函数之 strpos stripos strrpos strripos相关推荐

  1. php strpos与strrpos,PHP开发之 strpos stripos strrpos strripos的区别

    前言 在日常PHP开发中strpos stripos strrpos strripos这四个函数是会经常用到的,但是你又掌握了多少呢?在这里将着中就这4个函数做一个详细的解析. 正文 stripos ...

  2. PHP开发之 strpos stripos strrpos strripos的区别

    前言 在日常PHP开发中strpos stripos strrpos strripos这四个函数是会经常用到的,但是你又掌握了多少呢?在这里将着中就这4个函数做一个详细的解析. 正文 stripos ...

  3. php strpos 区分大小写么?,php查找字符串strpos(), stripos(),strrpos(), strripos()的区别

    strpos – 查找字符串首次出现的位置,strpos() 函数对大小写敏感(区分大小写). stripos – 查找字符串首次出现的位置(不区分大小写) strrpos – 计算指定字符串在目标字 ...

  4. [PHP] strpos stripos strrpos strripos的区别

    stripos - 查找字符串首次出现的位置(不区分大小写),应使用 === 运算符来测试此函数的返回值 strpos 左边开始字符出现的第一个位置,区分大小写 stripos 和上面一样,不区分大小 ...

  5. php中strpos(), stripos(),strrpos(), strripos()的区别

    作用: 1.判断某个字符串在另一个字符串中的位置 2.判断某个字符串是否包含一个字符串 strpos($str,$char),      左边开始,符出现的位置,区分大小写: stripos($str ...

  6. php strpos与strrpos,php strpos(), stripos(),strrpos(), strripos()的区别

    strpos(), 左边开始,字符出现第一个位置,区分大小写: stripos(),不区分大小写: strrpos(), 左边开始,字符出现,最后一个位置,区分大小写: strripos()不区分大小 ...

  7. 反思PHP多个字符串函数

    查找 strpos stripos strrpos strripos 替换 strtr strstr str_replace substr_replace 截取 substr mb_substr

  8. php strpos与strrpos,PHP 字符串计算 strlen、strpos 与 strrpos 函数

    今天无聊一直逛PHP的论坛,顺便弄点有用的东西保存下来,正好很多时间没有更新博客了,今天说说PHP中一些字符串计算的函数,如果我说的不对,还请大神们在下方的评论处留言,并指正一二. 计算字符串的长度或 ...

  9. php中的stripos,php字符串函数stripos()的定义与用法

    php 字符串函数stripos()的作用? 字符串函数stripos()是查找字符串在另一字符串中第一次出现的位置,该函数是不区分大小写的.用起来是很方便的,与其相关的函数有strripos() - ...

最新文章

  1. 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用启用普通安卓应用 | 应用进程分析 )
  2. Android中使用Adapter(适配器)给RecycleView设置数据源
  3. appium for mac 安装与测试ios说明
  4. 常见Orcale报错问题解决办法
  5. 1085 PAT单位排行 (25 分
  6. django-动态的读取静态目录路径
  7. mysql主从复制原理分析
  8. 红米有android,这些是不支持ANDROID 11更新的小米和红米手机
  9. H5脱离微信通过调起微信客户端支付
  10. 多重搜索算法_Android多重搜寻,例如传送,搜寻联络人
  11. java工厂模式和抽象工厂_Java中的抽象工厂设计模式
  12. 安装django步骤
  13. Git XP 安装图解
  14. linux 限制进程网速,Linux限制网速
  15. xshell功能大全(上)
  16. android内部测试注册,马化腾也感受到了压力,开启微信号修改内测,安卓和iOS都可以...
  17. 搭建网站服务器必须开443端口,记录解决网站443端口不通的问题(启动HTTP或者更换域名)...
  18. DFS入门级(模板)
  19. Perplexity困惑度解释
  20. 新买的电脑硬盘如何分区

热门文章

  1. 智能建造与建筑工业化协同发展,相关人才需求增加
  2. 单片机实验-开发板动态显示电路移植
  3. thinkpad e40 4sc安装windows7的一点感受
  4. python下载图片脚本_[python]非常小的下载图片脚本(非通用)
  5. Radiology第18期:MRI检测致痫区的图像处理研究进展
  6. mysql 错误代码1064_如何解决mysql错误代码1064
  7. CBC翻转攻击与实验吧CTF例题:简单的登录题
  8. 数据库——数据完整性和约束条件
  9. 计算机gh,你值得拥有的GH小技巧(二)—数据结构专篇
  10. unity3D声音播放