strrchr() 函数返回结果有时候不对
程序员文章站
2024-04-05 13:39:12
...
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 值的字符。
显然后者忽略了“仅使用第一个字符”的说明
但“要查找的字符”和“要查找的字符串”还是有所不同的
手册上的经典例子:
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 值的字符。
显然后者忽略了“仅使用第一个字符”的说明
但“要查找的字符”和“要查找的字符串”还是有所不同的
相关文章
相关视频
推荐阅读
-
strrchr() 函数返回结果有时候不对
-
python实训三 编写函数,接收一个字符串,分别统计大写字母,小写字母,数字,其他字符的个数,并以元组的形式返回结果
-
php将fileterms函数返回的结果变成可读的形式
-
mysql 返回多个函数计算结果
-
php将fileterms函数返回的结果变成可读的形式
-
PHP使用empty检查函数返回结果时报Fatal error: Can't use function return value in write context的问题 - 心中的飞梦
-
oracle通过function函数返回结果集(示例讲解)
-
python中函数返回多个结果的实例方法
-
strrchr() 函数返回结果有时不对?
-
php将fileterms函数返回的结果变成可读的形式