百科狗-知识改变命运!
--

strpos() - 查找字符串首次出现的位置 - php 字符串函数

梵高1年前 (2023-11-21)阅读数 24#技术干货
文章标签字符串

strpos()

(PHP 4, PHP 5, PHP 7)

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

说明

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

返回$needle在$haystack中首次出现的数字位置。

参数

$haystack

strpos() - 查找字符串首次出现的位置 - php 字符串函数

在该字符串中进行查找。

$needle

如果$needle不是一个字符串,那么它将被转换为整型并被视为字符的顺序值。

$offset

如果提供了此参数,搜索会从字符串该字符数的起始位置开始统计。如果是负数,搜索会从字符串结尾指定字符数开始。

返回值

返回 needle 存在于$haystack字符串起始的位置(独立于 offset)。同时注意字符串位置是从0开始,而不是从1开始的。

如果没找到 needle,将返回FALSE

Warning

此函数可能返回布尔值FALSE,但也可能返回等同于FALSE的非布尔值。请阅读布尔类型章节以获取更多信息。应使用===运算符来测试此函数的返回值。

更新日志

版本说明
7.1.0开始支持负数的$offset。

范例

使用===

注释

Note:此函数可安全用于二进制对象。

参见

  • stripos()查找字符串首次出现的位置(不区分大小写)
  • strrpos()计算指定字符串在目标字符串中最后一次出现的位置
  • strripos()计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
  • strstr()查找字符串的首次出现
  • strpbrk()在字符串中查找一组字符的任何一个字符
  • substr()返回字符串的子串
  • preg_match()执行匹配正则表达式
WARNING
As strpos may return either FALSE (substring absent) or 0 (substring at start of string), strict versus loose equivalency operators must be used very carefully.
To know that a substring is absent, you must use: 
=== FALSE
To know that a substring is present (in any position including 0), you can use either of:
!== FALSE (recommended)
 > -1 (note: or greater than any negative number)
To know that a substring is at the start of the string, you must use: 
=== 0
To know that a substring is in any position other than the start, you can use any of: 
 > 0 (recommended)
!= 0 (note: but not !== 0 which also equates to FALSE)
!= FALSE (disrecommended as highly confusing)
Also note that you cannot compare a value of "" to the returned value of strpos. With a loose equivalence operator (== or !=) it will return results which don't distinguish between the substring's presence versus position. With a strict equivalence operator (=== or !==) it will always return false.
This is a function I wrote to find all occurrences of a string, using strpos recursively.

This is how you use it:
It is interesting to be aware of the behavior when the treatment of strings with characters using different encodings.

will output:
Warning: strpos(): Empty needle in /in/lADCh on line 3 
bool(false) 
bool(false) 
Warning: strpos(): Empty needle in /in/lADCh on line 7 
bool(false)
Note also that warning text may differ depending on php version, see https://3v4l.org/lADCh
when you want to know how much of substring occurrences, you'll use "substr_count".
But, retrieve their positions, will be harder.
So, you can do it by starting with the last occurrence :
function strpos_r($haystack, $needle)
{
  if(strlen($needle) > strlen($haystack))
    trigger_error(sprintf("%s: length of argument 2 must be 

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)