| 分類 | 常用函數 | 用途 |
|---|---|---|
| 格式化 | trim, nl2br, htmlentities, addslashes, str_pad, strtoupper | 清理、轉義、填充、大小寫 |
| 子字串操作 | explode, implode, substr, strtok, str_split, strrev | 分割、合併、擷取、反轉 |
| 比較 | strcmp, strcasecmp, strnatcmp, strlen, substr_count | 排序、自然排序、長度、出現次數 |
| 搜尋替換 | strpos, strstr, str_replace, substr_replace, str_ireplace | 定位、替換、大小寫不敏感 |
| 多位元組 | mb_strlen, mb_substr, mb_strpos, mb_strstr, mb_substr_count | UTF-8/GBK 中文正確處理 |
<?php $raw = " \n Hello World! \r\n "; // 去除空白 echo '[' . trim($raw) . ']'; // [Hello World!] echo '[' . ltrim($raw) . ']'; // [Hello World! \r\n ] echo '[' . rtrim($raw) . ']'; // [ \n Hello World!] // 換行轉換 $text = "Line1\nLine2\r\nLine3"; echo nl2br($text); // Line1
\nLine2
\nLine3 // HTML 轉義 (防 XSS) $unsafe = ''; echo htmlspecialchars($unsafe); // <script>alert(1)</script> // 資料庫轉義 (舊式 mysql_* 函數時代,現建議用 PDO 預處理) $escaped = addslashes("It's a \"test\"\\null"); // It\'s a \"test\"\\null // 字串填充 echo str_pad('5', 3, '0', STR_PAD_LEFT); // 005 echo str_pad('Hello', 10, '-'); // Hello----- // 大小寫轉換 echo strtoupper('hello'); // HELLO echo ucfirst('hello'); // Hello echo ucwords('hello world'); // Hello World ?>
<?php
$email = 'user.name@example.com';
// 分割
$parts = explode('@', $email); // ['user.name', 'example.com']
$domain = $parts[1] ?? '';
// 合併
$tags = ['php', 'laravel', 'api'];
echo implode(',', $tags); // php,laravel,api
// 固定格式擷取 (如身分證、日期)
$id = 'A123456789';
$area = substr($id, 0, 1); // A
$num = substr($id, 1); // 123456789
// 字元陣列
$chars = str_split('ABC'); // ['A', 'B', 'C']
// 反轉
echo strrev('Hello'); // olleH
?>
<?php
// 比較 (回傳負/0/正)
strcmp('apple', 'banana'); // < 0
strcasecmp('Apple', 'apple'); // 0 (不分大小寫)
strnatcmp('v2', 'v10'); // < 0 (自然排序: 2 < 10)
// 定位
$haystack = 'The quick brown fox';
strpos($haystack, 'quick'); // 4 (位置)
strpos($haystack, 'cat'); // false
// 子字串搜尋 (回傳剩餘字串)
strstr($haystack, 'quick'); // 'quick brown fox'
stristr($haystack, 'QUICK'); // 同上 (不分大小寫)
// 出現次數
substr_count('ababab', 'ab'); // 3
?>
<?php
$template = 'Hello {name}, welcome to {site}!';
// 簡單替換
echo str_replace(['{name}', '{site}'], ['John', 'PHP'], $template);
// Hello John, welcome to PHP!
// 陣列批次替換
$replacements = [
'{name}' => 'Jane',
'{site}' => 'Laravel',
];
echo strtr($template, $replacements); // 更安全,避免巢狀替換問題
// 部分替換 (位置/長度)
substr_replace('Hello World', 'PHP', 6, 5); // Hello PHP
?>
<?php
// 確保設定內部編碼
mb_internal_encoding('UTF-8');
$zh = '你好,世界!';
// 長度
strlen($zh); // 15 (位元組數)
mb_strlen($zh); // 7 (字元數)
// 擷取
substr($zh, 0, 6); // 亂碼 (按位元組切)
mb_substr($zh, 0, 3); // 你好,
// 定位
strpos($zh, '世'); // 可能錯誤
mb_strpos($zh, '世'); // 3 (正確)
// 出現次數
substr_count($zh, '你'); // 可能錯誤
mb_substr_count($zh, '你'); // 1
?>
{$var} 語法implode() 或 sprintf() 優於反覆 .str_replace,複雜模式才用 preg_replace熟練掌握字串函數,是 PHP 開發處理文字資料的核心基本功。