使用 substr_replace() 函数可以替换字符串中指定位置的子串,通过设置 start 和 length 参数精确控制替换范围。该函数接受原始字符串、替换内容、起始位置和长度四个参数,返回修改后的新字符串。若 length 为负数,则从起始位置开始到倒数第几个字符结束;若省略或为零,则从起始位置插入新字符串而不删除原有内容。

如何替换字符串中间固定长度的子串
当需要替换字符串中间某段固定长度的内容时,直接传入正数的 length 参数即可。例如将 "Hello World" 中的 "World" 替换为 "PHP",起始位置为 6,长度为 5。此操作会删除原位置的 5 个字符并填入新字符串。

$original = "Hello World"; $replacement = "PHP"; $start = 6; $length = 5; $result = substr_replace($original, $replacement, $start, $length); echo $result;
预期输出:
PHP World
如何处理从末尾倒计数的替换场景
当需要替换从字符串末尾往前数的部分时,可以使用负数的 length 参数。例如在 "abcdef" 中将最后两个字符 "ef" 替换为 "XY",起始位置设为 -2,长度设为 -2。这种用法常用于处理文件扩展名或固定后缀的修改。

$str = "document.pdf"; $new_ext = "txt"; // 从倒数第4个字符开始(即'.'的位置),替换剩余所有字符 $result = substr_replace($str, $new_ext, -4); echo $result;
预期输出:
document.txt
如果start参数为0且length为0会发生什么
当 start 为 0 且 length 为 0 时,substr_replace() 会在字符串开头插入新字符串,而不删除任何原有字符。这相当于在头部进行拼接操作。例如将 "abc" 替换为 "XYZ",起始位置 0,长度 0,结果为 "XYZabc"。这种行为可用于实现前缀添加功能,无需手动连接字符串。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











