PHP 字符串函數極其豐富,選對函數事半功倍。本文梳理 10 個高頻場景,給出最優函數選擇與示例代碼。
strlen()$text = "sunny day";
$count = strlen($text); // 9 (含空格)
注意:多字節字符需用 mb_strlen($text, 'UTF-8')。
substr_replace()$article = "BREAKING NEWS: In ultimate irony, man bites dog.";
$summary = substr_replace($article, "...", 40);
// "BREAKING NEWS: In ultimate irony, man bi..."
多字節安全版:mb_substr($article, 0, 40, 'UTF-8') . '...'。
str_word_count() / count_chars()$article = "BREAKING NEWS: In ultimate irony, man bites dog.";
$wordCount = str_word_count($article); // 8
$charFreq = count_chars($article, 1); // 返回 [ord=>freq] 數組
fgetcsv() 一行搞定$fh = fopen("contacts.csv", "r");
while ($line = fgetcsv($fh, 1000, ",")) {
echo "Contact: {$line[1]}\n"; // 直接取欄位
}
fclose($fh);
自動處理引號包裹、欄位內逗號、換行等邊界情況,遠優於 fgets+explode。
implode()$csvLine = implode(",", $record);
含特殊字符時建議 fputcsv() 直接寫入文件句柄,自動處理轉義。
preg_replace() 正則替換$text = "Visit https://example.com now";
$linked = preg_replace(
'/https?:\/\/[^\s]+/',
'<a href="$0" target="_blank">$0</a>',
$text
);
生產環境建議用成熟庫(如 league/html-to-markdown 反向或專用 URL 鏈接器),正則難以覆蓋所有合法 URL 形式。
strip_tags()$safe = strip_tags($input); // 全部移除
$safe = strip_tags($input, '<b><i><u>'); // 保留指定標籤
配合 HTMLPurifier 做深度 XSS 防護更可靠。
strcmp() / strcasecmp()$pswd = "secret"; $pswd2 = "secret";
if (strcmp($pswd, $pswd2) !== 0) echo "不一致";
// 不區分大小寫用 strcasecmp()
返回 0 表示相等,非 0 表示差異,比 == 更嚴格且二進制安全。
<br> → nl2br()$comment = nl2br($comment); // \n \r\n 都轉為 <br />
wordwrap()$speech = "Four score and seven years ago...";
echo wordwrap($speech, 30); // 每 30 字符換行
參數 3 可指定斷行符,參數 4 true 強制單詞內斷行。
mb_* 族函數(mb_strlen、mb_substr、mb_strpos...)。u 修飾符啟用 UTF-8 模式。掌握這 10 大場景的最優解,字符串處理不再是痛點。