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

PHP 字串完整反轉:strrev() 函數用法與多位元組字元注意事項

     編輯:PHP 相關知識

前言

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(回文)
?>

UTF-8 多位元組字元問題

<?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 程式設計有所幫助。

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