>  기사  >  백엔드 개발  >  strrchr() 函数返回结果有时候不对

strrchr() 函数返回结果有时候不对

WBOY
WBOY원래의
2016-06-13 12:03:521373검색

strrchr() 函数返回结果有时不对?
手册上的经典例子:
echo strrchr("Hello world!","world");
输出为:world!

但继续尝试会发现这些奇葩结果:
echo strrchr("Hello aaaaworld!","aaaaworld");
输出:aworld!

echo strrchr("Hello cacworld!","cacworld");
输出:cworld! 

echo strrchr("abc123cache123","cache");
输出:che123

echo strrchr("cache","cache");
输出:che

等等,总之是会返回不全,总是缺前面几个字符,不知为何??
------解决方案--------------------

第二个参数:
1、如果包含了不止一个字符,那么仅使用【第一个字符】
2、如果不是一个字符串,那么将被转化为整型并被视为字符顺序值
例:echo strrchr("Hello aaaaworld!","aaaaworld");
只以a为查找字符串,输出:aworld!
这是对的


------解决方案--------------------
php手册:
If needle contains more than one character, only the first is used 
如果 needle 包含了不止一个字符,那么仅使用第一个字符。该行为不同于 strstr()。 

w3school:
规定要查找的字符。如果该参数是数字,则搜索匹配数字 ASCII 值的字符。

显然后者忽略了“仅使用第一个字符”的说明
但“要查找的字符”和“要查找的字符串”还是有所不同的

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.