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

PHP strtr 字串替換函數完整用法詳解

     編輯:PHP 綜合知識

strtr 是 PHP 高效能字串替換函數,支援「字元對字元」與「陣列對應」兩種模式。本文深度解析其特殊替換規則、效能優勢與最佳實踐模式。

兩種呼叫模式

strtr(string, from, to)      // 字元對字元模式
strtr(string, array)         // 陣列對應模式(推薦)

模式一:字元對字元(易誤用)

<?php
echo strtr("I Love you", "Lo", "lO"); 
// 輸出:I lOve yOu
// 特點:單字元對應、區分大小寫、from/to 長度需相同
?>

⚠️ 陷阱:

  • to 不能為空字串(空格可)
  • 替換會影響後續字元(如上例 you 中的 o 也被替換)
  • 長度不同時行為不可預期

模式二:陣列對應(推薦、直觀、高效)

<?php
$map = [
    'you' => 'her sister',
    'Love' => 'hate'
];
echo strtr("I Love you", $map);
// 輸出:I hate her sister
?>

優點:

  • 支援多字元關鍵字替換
  • 長度不一無所謂
  • 可動態累加替換規則:$map += ['new' => 'rule'];
  • 效能比 str_replace 快約 4 倍

長度不一時的行為差異

情況程式碼結果說明
from 較短strtr("paocai", "pao", "bai123")baicai只替換前 3 字元
from 較長strtr("paocai", "pao", "la")laocai多出字元被截斷
陣列模式strtr("paocai", ['ao'=>'oa','ai'=>'ia'])poacia獨立匹配互不干擾

strtr vs str_replace

<?php
// str_replace:支援陣列搜尋/替換,但會重複掃描字串
echo str_replace("you", "paocai", "I love you!"); // I love paocai!

// strtr 陣列模式:單次掃描完成所有替換,效能更好
$map = ['you'=>'paocai', 'love'=>'hate'];
echo strtr("I love you!", $map); // I hate paocai!
?>

最佳實踐建議

  1. 優先使用 陣列模式,語意清晰且效能最佳
  2. 需求簡單單字元替換時,考慮 str_replace 可讀性較高
  3. 大量資料處理時,strtr 顯著降低 CPU 佔用
  4. 注意:strtr 不支援正則表達式,複雜模式請用 preg_replace
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved