Invision Community论坛PHP调用str_replace替换字符串失效问题问询
问题原因及解决方法
- 原因1:
str_replace是大小写敏感的替换函数,若原通知文本中的目标单词存在大小写差异(比如Commented、COMMENTED),就会匹配失败。
解决方法:改用不区分大小写的替换函数str_ireplace,调整后代码如下:{{$title = $notification['data']['title'];}} {{$title = str_ireplace("commented", "reacted", $title);}} <span class='ipsDataItem_title ipsType_break'>{$title}</span> - 原因2:原文本中的
commented包含隐藏字符、HTML实体或者特殊格式标记,导致纯文本匹配失败。
解决方法:先打印原始字符串确认内容,可临时添加调试代码查看原始输出:
对照输出的内容确认目标单词的实际写法,调整替换的匹配文本即可。{{var_dump(htmlspecialchars($notification['data']['title']));exit;}} - 原因3:硬编码替换容易被模板后续渲染逻辑覆盖,且更新系统后可能失效。
更稳妥的方案:直接修改Invision Community的语言包。登录论坛后台,进入「自定义-本地化-语言包」界面,搜索包含commented的对应语言项,直接将其修改为reacted即可,不需要修改代码,也不会受后续系统更新的影响。
内容的提问来源于stack exchange,提问作者Havooc
相关产品推荐
相关产品推荐

