substr_replace() 可在字串指定位置、指定長度範圍內替換為新字串,比 str_replace() 更精確控制替換範圍。本文詳細說明參數、多重替換與實務範例。
substr_replace(
string|array $string,
string|array $replace,
int|array $offset,
int|array $length = null
): string|array
0 為插入不刪除;正數刪除該長度;負數保留結尾該長度;null 替換到結尾。<?php
$msg = "Warning: System will shutdown in NN minutes!";
$pos = strpos($msg, "NN");
echo substr_replace($msg, "15", $pos, 2) . "\n"; // Warning: System will shutdown in 15 minutes!
sleep(10); // 模擬 10 秒
echo substr_replace($msg, "5", $pos, 2) . "\n"; // Warning: System will shutdown in 5 minutes!
?>
<?php
$str = "abcdef";
// 插入不刪除(length=0)
echo substr_replace($str, "XXX", 2, 0) . "\n"; // abXXXcdef
// 替換到結尾(length=null)
echo substr_replace($str, "XYZ", 2) . "\n"; // abXYZ
// 保留結尾 2 字元(length=-2)
echo substr_replace($str, "MID", 1, -2) . "\n"; // aMIDef
// 陣列批次處理
$arr = ["apple", "banana", "cherry"];
echo implode(", ", substr_replace($arr, "FRUIT_", 0, 0)) . "\n";
// FRUIT_apple, FRUIT_banana, FRUIT_cherry
?>
| 特性 | substr_replace() | str_replace() |
|---|---|---|
| 定位方式 | 位置索引 | 搜尋字串 |
| 替換長度控制 | 精確指定 | 依搜尋字串長度 |
| 多重替換 | 支援陣列參數 | 支援陣列參數 |
| 適用場景 | 固定格式模板、位置精確 | 關鍵字替換、內容過濾 |