
在 PHP 中轉換所有類型的智慧引號
智慧引號是用來取代常規直引號(' 和")的印刷標記。它們提供了更精緻和然而,軟體應用程式通常會在不同類型的智能引號之間進行轉換,從而導致不一致。
智能引號中的挑戰轉換
轉換智慧引號的困難在於用於表示它們的各種編碼和字符,不同的作業系統和軟體程式採用自己的標準,導致引號字符的碎片化。代碼頁1252。的所有變體,包括Unicode、Windows 代碼頁1252 和其他舊編碼中定義的變體。實作
以下優化的 PHP 實作將所有類型的智慧引號轉換為常規引號:
function Convert_smart_quotes($string)
{
// 建立智慧引號字元到其各自 Unicode 表示形式的映射
$smart_quotes = 數組(
"\xC2\xAB" => '"', // « (U 00AB)
"\xC2\xBB" => '"', // » (U 00BB)
"\xE2\x80\x98" => "'", // ‘ (U 2018)
“\xE2\x80\x99”=>“'”,//'(U 2019)
"\xE2\x80\x9A" => "'", // ‚ (U 201A)
"\xE2\x80\x9B" => "'", // ‛ (U 201B)
"\xE2\x80\x9C" => '"', // “ (U 201C)
"\xE2\x80\x9D" => '"', // 」 (U 201D)
"\xE2\x80\x9E" => '"', // „ (U 201E)
"\xE2\x80\x9F" => '"', // ' (U 201F)
"\xE2\x80\xB9" => "'", // ← (U 2039)
"\xE2\x80\xBA" => "'", // › (U 203A)
);
// Strtr 函數可以直接將智慧引號字元替換為其 Unicode 對應字符
$converted_string = strtr($string, $smart_quotes);
// 傳回轉換後的字串
返回$converted_string;
}
此函數涵蓋了各種智慧引號變體,包括 Unicode、Windows 代碼頁 1252 和舊編碼中的變體。透過使用 strtr,它將所有智慧引號實例替換為其對應的 Unicode 表示形式,從而產生一致且標準化的文字。