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

PHP 字串分割與合併:explode、implode、str_split、preg_split 完整指南

     編輯:PHP 綜合知識

字串與陣列互轉是資料處理核心環節。PHP 提供多種分割與合併函數,支援固定分隔符、正則模式、固定長度等多樣化需求。

分割函數對照

函數分割依據回傳類型特性
explode()固定字串分隔符陣列最常用、效能最佳
preg_split()正則表達式陣列支援複雜模式、多種分隔符
str_split()固定長度陣列按字節/字符切分
parse_str()查詢字串格式變量/陣列專用於 URL 參數解析

explode():標準分割

<?php
$str = "Welcome to www.example.com!";
$parts = explode('.', $str);
print_r($parts);
/*
Array
(
    [0] => Welcome to www
    [1] => example
    [2] => com!
)
*/

// 限制分割數量 (PHP 5.1+)
$parts = explode('.', $str, 2);
// [0] => Welcome to www, [1] => example.com!

// 負數限制 (PHP 5.1+):排除最後 N 個元素
$parts = explode(',', 'a,b,c,d', -1); // ['a', 'b', 'c']
?>

preg_split():正則分割

<?php
// 多種空白字符分割
$str = "a\tb\nc  d";
$parts = preg_split('/\s+/', $str); // ['a', 'b', 'c', 'd']

// 保留分隔符 (PREG_SPLIT_DELIM_CAPTURE)
$parts = preg_split('/(\s+)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
// ['a', '\t', 'b', '\n', 'c', '  ', 'd']

// 忽略空元素 (PREG_SPLIT_NO_EMPTY)
$parts = preg_split('/,/', 'a,,b,', -1, PREG_SPLIT_NO_EMPTY); // ['a', 'b']
?>

str_split():固定長度切分

<?php
$str = 'Hello';
// 按字節切分 (每 2 字節)
print_r(str_split($str, 2)); 
// ['He', 'll', 'o']

// 多位元組安全切分
$str = '中文測試';
print_r(str_split($str, 3)); // 可能截斷字符
// 建議用 mb_str_split (PHP 7.4+) 或自定義函數
?>

implode() / join():陣列合併為字串

<?php
$parts = ['Welcome to', 'www', 'example', 'com!'];
$str = implode('.', $parts); // Welcome to.www.example.com!
$str = join(' | ', $parts);  // 別名函數

// 實用:陣列轉 SQL IN 列表
$ids = [1, 2, 3, 4];
$sql = 'SELECT * FROM users WHERE id IN (' . implode(',', $ids) . ')';
// SELECT * FROM users WHERE id IN (1,2,3,4)
?>

完整往返範例

<?php
$str = "Welcome to www.example.com!";
// 分割
$arr = explode('.', $str);
// 處理...
// 合併 (不同分隔符)
$newStr = implode('_', $arr); 
echo $newStr; // Welcome to www_example_com!
?>

進階:CSV 解析與生成

<?php
// 解析 CSV 行 (處理引號、逗號、換行)
$line = 'John,"Doe, Jr.",25,"New York"';
$fields = str_getcsv($line); // ['John', 'Doe, Jr.', '25', 'New York']

// 生成 CSV
$data = [['Name', 'Age'], ['John', 25], ['Jane', 30]];
$fp = fopen('php://memory', 'w');
foreach ($data as $row) fputcsv($fp, $row);
rewind($fp);
echo stream_get_contents($fp);
?>

選擇指南

  1. 固定分隔符 → explode()(最快)
  2. 複雜/多種分隔符 → preg_split()
  3. 固定寬度欄位 → str_split() / unpack()
  4. URL 參數 → parse_str()
  5. CSV 格式 → str_getcsv() / fgetcsv()

分割與合併是資料流轉換的橋樑,熟練掌握各函數特性能大幅簡化解析與序列化邏輯。

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