php substr_replace取值超出字符串长度导致api无输出踩坑

前言

最近回到php做一个商城的项目,遇到一个比较奇葩的问题,就是没有任何相关报错,但是api没有任何返回.于是一顿打断电排错,最后发现是substr_replace的锅.分享出来供大家参考也做个备忘.

具体问题描述

1.无任何相关报错,debug没有任何不对的地方,但是就是没有信息输出.
2.在返回json的地方用echo也没有任何输出.
3.具体代码如下,我是需要将用户名的第3-7位替换为*,之前的系统是用的手机号码,所以没有任何问题,这次的用户注册比较坑他们用自己的姓名注册了,和客户沟通客户说必须这样,遂最终在不知请的情况下出现这个bug.

$item['username'] = substr_replace($item['username'], '****', 3, 4);

解决问题

调整这句代码的替换参数或者去掉这个东东就可以了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PHP的内置函数 `substr_replace()` 用于替换字符串的一部分。它的参数如下: 1. `string $string`:原始字符串。 2. `mixed $replacement`:要替换的内容。可以是一个字符串字符串数组,用于替换原始字符串中指定位置的字符。 3. `int $start`:起始位置索引,表示从哪个位置开始替换。如果是正数,则从字符串的左侧开始计数;如果是负数,则从字符串的右侧开始计数。 4. `int|null $length`:可选参数,表示要替换的长度。如果指定了长度,则替换从起始位置开始指定长度的字符。如果未指定长度,则会替换从起始位置到字符串末尾的所有字符。 5. `string|null $encoding`:可选参数,表示字符串的编码。默认为 `null`,表示使用内部编码。 函数返回一个新的字符串,其中被替换的部分已经被指定的内容替代。 下面是一些示例: ```php $str = "Hello, world!"; // 将字符串中的 "world" 替换为 "everyone" echo substr_replace($str, "everyone", 7, 5); // 输出: Hello, everyone! // 将字符串中索引位置2开始的3个字符替换为 "ABC" echo substr_replace($str, "ABC", 2, 3); // 输出: HeABC, world! // 将字符串中索引位置-6开始到末尾的字符替换为空字符串 echo substr_replace($str, "", -6); // 输出: Hello, // 指定字符串编码为UTF-8 echo substr_replace($str, "everyone", 7, 5, 'UTF-8'); // 输出: Hello, everyone! ``` 请注意,如果使用多字节字符编码(如UTF-8),需要确保字符串函数能正确处理多字节字符。在这种情况下,可以使用 `mb_substr_replace()` 函数来替代 `substr_replace()`,以确保正确处理多字节字符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱折腾的小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值