首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 字串替換函數大全:str_ireplace、substr_replace、strtr、preg_replace 實戰指南

     編輯:PHP 綜合知識

字串替換是內容處理、模板渲染、資料清洗的高頻操作。PHP 提供多層次替換函數,從簡單全域替換到位置精確控制、正則模式替換,覆蓋各類場景。

函數對照表

函數替換模式大小寫敏感支援陣列位置控制正則支援
str_replace()全域是是否否
str_ireplace()全域否是否否
substr_replace()指定位置/長度是是是否
strtr()字符/子字串映射是是(映射陣列)否否
preg_replace()正則模式可控是否是

str_ireplace():不區分大小寫全域替換

<?php
$str = "Welcome to www.Example.COM!";
echo str_ireplace('com', 'net', $str); 
// Welcome to www.Example.NET!

// 關鍵字高亮(搜尋結果描紅)
$keyword = 'php';
$text = 'PHP 是最好的語言,php 很流行';
$highlighted = str_ireplace($keyword, "$keyword", $text);
echo $highlighted;
?>

substr_replace():精確位置替換

<?php
$str = "Welcome to www.example.com!";
// 從索引 11 開始替換到結尾
echo substr_replace($str, 'China', 11); 
// Welcome to China

// 替換指定長度:索引 11,長度 15 替換為 China
echo substr_replace($str, 'China', 11, 15); 
// Welcome to China!

// 陣列批量:多個位置同時替換
$arr = ['Hello A', 'Hello B', 'Hello C'];
echo substr_replace($arr, 'Hi', 6); 
// ['Hi A', 'Hi B', 'Hi C']
?>

strtr():字符級/映射表替換(單次掃描,效能佳)

<?php
// 字符映射:單字符替換
echo strtr('hello', 'el', 'ip'); // hippo

// 子字串映射表(長者優先匹配)
$trans = [
    'Hello' => 'Hi',
    'world' => 'PHP',
    'Hi' => 'Hey' // 不會二次替換
];
echo strtr('Hello world', $trans); // Hi PHP
?>

preg_replace():正則替換(最強大)

<?php
// 隱藏手機中間 4 位
$phone = '13812345678';
echo preg_replace('/(\d{3})\d{4}(\d{4})/', '$1****$2', $phone); 
// 138****5678

// 多行標準化空白
$text = "Line1\n\n\nLine2\t\tLine3";
echo preg_replace('/\s+/', ' ', $text); // Line1 Line2 Line3

// 回調函數動態替換
echo preg_replace_callback('/\b(\w+)\b/', function($m) {
    return strtoupper($m[1]);
}, 'hello world'); // HELLO WORLD
?>

實戰:模板引擎簡易實現

<?php
function render($template, $data) {
    return preg_replace_callback('/\{\{(\w+)\}\}/', function($m) use ($data) {
        return $data[$m[1]] ?? $m[0];
    }, $template);
}

$tpl = 'Hello {{name}}, welcome to {{site}}!';
$data = ['name' => 'John', 'site' => 'Example.com'];
echo render($tpl, $data); // Hello John, welcome to Example.com!
?>

選擇指南

  1. 簡單全域替換 → str_replace() / str_ireplace()
  2. 需精確控制位置/長度 → substr_replace()
  3. 多組映射/單次掃描 → strtr()
  4. 模式匹配/提取/動態替換 → preg_replace()

替換操作看似簡單,但大數據量下效能差異巨大:strtr() 單次掃描優於多次 str_replace(),正則最靈活但最慢,按需選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved