字串操作是 Web 開發最高頻任務。PHP 提供超過 100 個字串函數,本文精選實戰高頻函數,分類整理為 URL 解析、輸出格式化、大小寫轉換、編碼補齊、HTML 實體轉換、安全過濾三道防線,並附正則表達式應用範例。
parse_url():拆解 URL 結構<?php
$url = "https://blog.csdn.net/junzaivip.php?id=10&name=20";
$parts = parse_url($url);
/*
Array (
[scheme] => http
[host] => blog.csdn.net
[path] => /junzaivip.php
[query] => id=10&name=20
)
*/
?>
parse_str():查詢字串轉陣列(推薦)<?php
parse_str($parts['query'], $queryArr);
print_r($queryArr); // Array ( [id] => 10 [name] => 20 )
?>
pathinfo():路徑資訊(較少用於完整 URL)<?php
$path = "https://blog.csdn.net/junzaivip";
print_r(pathinfo($path));
// [dirname] => https://blog.csdn.net [basename] => junzaivip [extension] => [filename] => junzaivip
?>
| 函數 | 說明 | 範例 |
|---|---|---|
echo | 語言結構,多參數用逗號,無回傳值 | echo 'a','b'; |
print | 函數,單參數,回傳 1 | $r = print 'hi'; |
printf | 格式化輸出(同 C) | printf("%s-%d", 'age', 25); |
sprintf | 格式化回傳字串 | $s = sprintf("%0.2f", 3.14159); |
常用格式符:%s字串 %d整數 %f浮點 %.2f保留兩位小數 %x十六進位。
trim()/ltrim()/rtrim():移除首尾/左/右空白(含 \n\r\t\v\0)。str_pad($str, 10, '*', STR_PAD_LEFT):補齊指定長度。str_repeat('-', 20):重複字串(常用於無限分類縮進)。strlen():位元組長度(多位元組字元請用 mb_strlen())。strtolower() / strtoupper():全轉小寫/大寫。ucfirst():首字母大寫。ucwords():每個單詞首字母大寫。strrev():反轉字串。number_format(12345.678, 2, '.', ','):千分位格式化 → 12,345.68。md5($str):32 位雜湊(不適合密碼儲存,請用 password_hash())。str_shuffle($str):隨機打亂字元順序。| 函數 | 用途 | 轉換對象 |
|---|---|---|
nl2br() | 換行轉 <br> | \n |
htmlspecialchars() | 防 XSS,轉 HTML 實體 | & ' " < > → & " ' < > |
addslashes() | 資料庫轉義(舊式) | ' " \ NUL 前加反斜線 |
stripslashes() | 移除 addslashes 加的斜線 | - |
strip_tags() | 保留允許標籤,剝離其餘 | strip_tags($html, ' |
strip_tags($input, '') 只保留安全標籤。addslashes() 或 **預處理語句**(PDO::prepare,現代首選)。htmlspecialchars() 輸出到 HTML 時使用,入庫前可選。preg_split() 分割<?php
$query = "id=10&name=20";
$arr = preg_split('/[&=]/', $query); // 以 & 或 = 分割
// Array ( [0] => id [1] => 10 [2] => name [3] => 20 )
?>
preg_match() / preg_match_all() 擷取<?php
$str = "Email: test@example.com, Phone: 0912-345678";
preg_match_all('/\b[\w.]+@[\w.]+\.\w+\b/', $str, $matches);
print_r($matches[0]); // Array ( [0] => test@example.com )
?>
preg_replace() 替換<?php
$str = "價格:$100 和 $200";
echo preg_replace('/\$\d+/', '**隱藏**', $str); // 價格:**隱藏** 和 **隱藏**
?>
字串處理的核心原則:輸入過濾、儲存轉義、輸出編碼。熟練掌握上述函數與正則,能將複雜的字串邏輯簡化為幾行語意清晰的代碼。現代開發中,請優先使用 mb_* 多位元組函數族群與 PDO 預處理,確保 Unicode 與資安無虞。