PHP中str_replace替换自定义短代码后返回空字符串的问题排查
str_replace返回空结果原因
str_replace处理数组类型的搜索、替换参数时,遵循以下规则:
- 当
$search和$replace均为数组时,按索引一一对应执行替换 - 若
$replace数组元素数量少于$search数组,$search中超出$replace长度的匹配项,会统一被替换为空字符串
你提供的代码中,$search数组总长度为15,$replace数组长度仅为1。你要替换的{{ticket_subject}}位于$search数组的索引3位置,已经超出$replace的索引范围,匹配后会被替换为空字符串,因此最终输出为空。
修复方案
可根据实际需求任选一种修改:
- 将
$replace改为字符串类型,$search中所有匹配项都会统一替换为该字符串:
// 原数组改为字符串 $replace = "ticket with attachments";
- 保证
$search和$replace数组长度一一对应,为每个短代码设置对应的替换值 - 仅把需要用到的短代码放入
$search数组,和$replace元素一一对应
内容的提问来源于stack exchange,提问作者user16648336
相关产品推荐
相关产品推荐

