PHP 內建 strrev() 可將字串字元順序完全反轉("abc" -> "cba")。本文說明基本用法、編碼陷阱與多語系替代方案。
<?php
echo strrev('This is not a palindrome.') . "\n";
// .emordnilap a ton si sihT
echo strrev('12345') . "\n"; // 54321
echo strrev('madam') . "\n"; // madam(回文)
?>
<?php
$str = '中文測試';
echo "strrev: " . strrev($str) . "\n"; // 輸出亂碼:驗測文中
// 正確做法:使用 mbstring 擴展
function mb_strrev(string $str, string $encoding = 'UTF-8'): string {
$chars = [];
for ($i = mb_strlen($str, $encoding) - 1; $i >= 0; $i--) {
$chars[] = mb_substr($str, $i, 1, $encoding);
}
return implode('', $chars);
}
echo "mb_strrev: " . mb_strrev($str) . "\n"; // 試測文中
?>
strtolower($str) === strtolower(strrev($str))| 方法 | 適用編碼 | 相對速度 |
|---|---|---|
| strrev() | 單位元組 (ASCII/ISO-8859-1) | 最快 (C 實作) |
| mb_strrev() 自實作 | UTF-8 等多位元組 | 較慢 (PHP 迴圈) |
| grapheme_strrev() (intl) | Unicode 字素簇 | 最正確,較慢 |
strrev() 適合 ASCII 字串快速反轉,處理中文等多位元組字元請使用 mb_strrev() 或 grapheme_strrev() 避免亂碼。希望本文對您的 PHP 程式設計有所幫助。