1、strchr(同strstr)
strchr(string $haystack , mixed $needle [, bool $before_needle = false ] )查找字符串在指定字符串中的首次出现
返回从第一次出现的位置到haystack 结束的字符串或false(没有找到needle)
$haystack 被查找的字符串
$needle 要查找的字符串(如果不是字符串,将被转化成整型并且作为字符的序号来使用)
$before_needel 控制返回结果,如果为true返回第一次出现到haystack 开始的字符串(不包含needle)
示例:
strchr(‘hello world!’,’wor’) 返回world!
strchr(‘name@example.com’,’@’,true) 返回name
2、strrchr
strrchr(string $haystack , mixed $needle)查找字符串在指定字符串中的最后一次出现
返回最后一次出现的位置到haystack 结束的字符串或false(没有找到needle)
$haystack 被查找的字符串
$needle 要查找的字符串(如果不是字符串,将被转化成整型并且作为字符的序号来使用)
示例:
strrchr(‘hello world world!’,’world’) 返回world!
3、strpos
strpos(string $haystack , mixed $needle [, int $offset = 0 ])查找字符串在指定字符串中首次出现的位置
返回字符串 haystack 中 needle 最后一次出现的数字位置(如果$offset为正数,从左边第0个开始,如果为负数,从右边第1个开始),如果没找到needle,返回false
$haystack 被查找的字符串
$needle 要查找的字符串(如果不是字符串,将被转化成整型并且作为字符的序号来使用)
$offset 如果提供了此参数,搜索会从字符串偏移了|$offset|后开始统计(控制从字符串什么位置开始查找)。如果为负数,表示从后向前开始数|$offset|后(可以理解为最大匹配到从右边第$offset位,不是删除的意思),查找字符串第一次出现的位置。
注意:strpos函数的$offset参数在PHP7.1以后生效
示例:
strpos(‘hello world world’,’wor’) 返回6//从0开始数,w字符为第6位
strpos(‘hello world world’,’wor’,10) 返回12//从第10个开始数,w字符为第12位(第二个w)
strpos(‘hello world world’,’w’,-12) 返回false//从右边开始数,数12位后(从1计数),再查找,返回false
4、strrpos
strpos(string $haystack , mixed $needle [, int $offset = 0 ])查找字符串在指定字符串中最后一次出现的位置
返回字符串 haystack 中 needle 最后一次出现的数字位置(如果$offset为正数,从左边第0个开始,如果为负数,从右边第1个开始),如果没有找到返回false
$haystack 被查找的字符串
$needle 要查找的字符串(如果不是字符串,将被转化成整型并且作为字符的序号来使用)
$offset 或许会查找字符串中任意长度的子字符串。负数值将导致查找在字符串结尾处开始的计数位置处结束。
示例:
strrpos(‘AAABBBCCCDDD’,’DDD’) //返回9,最后一次出现的位置为9
strrpos(‘AAABBBCCCDD’,’DDD’)//返回false,指定字符串中没有字符串’DDD’
strrpos(‘AAABBBCCCDDDD’,’DDD’,-2)//返回10,最大匹配到从有边数第2个,不会再进行匹配(不是删除最后两个D,如果是这样的话,匹配不到DDD,会返回false)
strrpos(‘AAABBBCCCDDDD’,’DDD’,-4)//返回9,最大匹配到从有边数第2个,不会再进行匹配
总结:如果只是想判断$needle是否存在于$haystack中,使用strpos或strrpos,因为它速度更快,耗费内存更少
可以使用strrpos($haystack,$needle,-strlen($haystack))用于查找$needle是否位于$haystack开头,返回值应该用===比较,因为如果返回0和false在==时效果相同(PHP7.1以下strpos不支持$offset参数)