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

PHP 字串替換、分割與合併完整指南:str_replace、preg_replace、explode、implode 進階用法

     編輯:PHP 綜合知識

字串替換

函式特性效能適用場景
str_replace()字面字串替換、支援陣列、大小寫敏感最快 (C 層)固定字串、批次替換
str_ireplace()不分大小寫快關鍵字過濾
preg_replace()正則表達式、支援回調、捕獲群組較慢複雜模式、格式化

str_replace 進階

$search = ['{name}', '{date}'];
$replace = ['John', date('Y-m-d')];
echo str_replace($search, $replace, 'Hello {name}, today is {date}');
// Hello John, today is 2024-05-20

// 計算替換次數
$count = 0;
str_replace('a', 'b', 'aaa', $count);
echo $count; // 3

preg_replace 回調

// 駝峰轉底線
echo preg_replace_callback('/([A-Z])/', fn($m) => '_' . strtolower($m[1]), 'CamelCase');
// _camel_case

// HTML 實體編碼 (排除基本標籤)
echo preg_replace('/&(?!#?\w+;)/', '&', 'A & B'); // A & B

字串分割

函式分隔依據回傳效能
explode()固定字串陣列最快
preg_split()正則陣列中等
str_split()固定長度陣列快
mb_split()正則 (多位元組安全)陣列中等

explode 參數細節

$str = 'a|b|c|d';
explode('|', $str, 2);   // ['a', 'b|c|d']  正數:最多 N 個元素
explode('|', $str, -1);  // ['a', 'b', 'c'] 負數:排除最後 N 個元素 (PHP 5.1+)

preg_split 保留分隔符

preg_split('/(\s+)/', 'a  b\tc', -1, PREG_SPLIT_DELIM_CAPTURE);
// ['a', '  ', 'b', '\t', 'c']

字串合併

$parts = ['a', 'b', 'c'];
implode('|', $parts); // 'a|b|c'

// 陣列鍵值合併
$arr = ['name'=>'John', 'age'=>25];
implode(',', array_map(fn($k,$v)=>"$k=$v", array_keys($arr), $arr));
// name=John,age=25

// 空陣列回傳空字串
implode(',', []); // ''

效能與最佳實踐

  • 固定字串操作**優先用 str_*/explode/implode**,避免正則開銷
  • 大量替換合併為單次 str_replace([...], [...], $str)
  • 多位元組字串 (UTF-8) 使用 mb_* 對應函式
  • 記憶體敏感場景考慮串流處理而非載入完整字串

相關專題

  • 《PHP 字串(string)用法總結》
  • 《PHP 陣列(Array)操作技巧大全》
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved