在PHP开发中,字符串替换是处理文本数据时非常高频的操作,str_replace函数是官方提供的最常用的字符串替换工具,能够高效完成单字符、多字符、数组形式的替换需求,适配多种开发场景。

str_replace函数基本语法
str_replace函数的官方定义语法如下,支持多种参数组合形式:
<?php /** * @param mixed $search 要查找的替换目标,可以是字符串或者字符串数组 * @param mixed $replace 替换后的内容,可以是字符串或者字符串数组 * @param mixed $subject 被搜索的原始字符串或者字符串数组 * @param int &$count 可选参数,用来接收替换发生的次数 * @return mixed 返回替换后的结果,类型与$subject一致 */ str_replace($search, $replace, $subject, $count = null); ?>
基础使用场景示例
单个字符串替换
当需要替换原始字符串中的单个指定内容时,直接传入字符串类型的search和replace参数即可:
<?php
$original = "今天天气很好,适合出去散步";
$result = str_replace("散步", "跑步", $original);
echo $result; // 输出:今天天气很好,适合出去跑步
?>
多个字符串批量替换
如果需要同时替换多个不同的内容,可以把search和replace都设置为数组,两个数组的元素会按顺序一一对应完成替换:
<?php $original = "苹果是红色的,香蕉是黄色的"; $search = ["苹果", "香蕉", "红色", "黄色"]; $replace = ["草莓", "橙子", "粉色", "橙色"]; $result = str_replace($search, $replace, $original); echo $result; // 输出:草莓是粉色的,橙子是橙色的 ?>
数组形式的原始字符串替换
如果subject参数是字符串数组,str_replace会对数组中的每个元素都执行替换操作,返回的结果也是数组:
<?php
$originalArr = ["hello world", "hello php", "hello java"];
$resultArr = str_replace("hello", "hi", $originalArr);
print_r($resultArr);
// 输出:
// Array
// (
// [0] => hi world
// [1] => hi php
// [2] => hi java
// )
?>
实用使用技巧
统计替换次数
通过传入第四个引用参数count,可以获取本次替换操作实际发生的替换次数,方便做后续逻辑判断:
<?php
$original = "aaabbbaaacccaaa";
$result = str_replace("aaa", "bbb", $original, $count);
echo "替换结果:{$result}" . PHP_EOL;
echo "替换次数:{$count}"; // 输出替换次数:3
?>
替换数组长度不匹配的处理
如果search是数组,replace是字符串,那么所有search中的元素都会被替换为同一个replace字符串:
<?php $original = "猫,狗,兔"; $result = str_replace(["猫", "狗", "兔"], "动物", $original); echo $result; // 输出:动物,动物,动物 ?>
如果search的长度大于replace的长度,多余的search元素会被替换为空字符串:
<?php $original = "a1b2c3"; $result = str_replace(["1", "2", "3"], ["一"], $original); echo $result; // 输出:a一b ?>
大小写敏感特性
str_replace函数是大小写敏感的,如果需要忽略大小写进行替换,可以使用str_ireplace函数,二者的参数结构完全一致:
<?php
$original = "Hello HELLO hello";
$result = str_ireplace("hello", "hi", $original);
echo $result; // 输出:hi hi hi
?>
注意事项
- str_replace函数执行的是从左到右的替换,替换后的内容不会再次作为被搜索的目标参与替换,避免循环替换的问题。
- 如果subject是数组,replace和search的处理逻辑会作用于数组的每个元素,最终返回的也是数组类型结果。
- 替换操作不会修改原始字符串,而是返回一个新的结果,原始变量的值不会发生变化。
如果需要更复杂的字符串替换规则,比如基于正则表达式的替换,可以使用preg_replace函数,它支持正则匹配替换,适配更灵活的场景需求。
PHPstr_replace字符串替换字符串处理修改时间:2026-07-20 02:54:23