CodeIgniter音译配置指南 | AI生成和翻译
在 CodeIgniter 中的作用
这是 Text Helper 库中的一个配置文件(在 CodeIgniter 中名为 foreign_characters.php)。它用于 音译转换——一种将非 ASCII 字符(带重音符号、变音符号或外来字符)转换为其最接近的 ASCII 等效字符的过程(例如,ä → ae,ñ → n)。这有助于在 URL 别名、数据库安全字符串或跨平台兼容性等场景中处理特殊字符可能引发的问题。
- 它属于旧版 CodeIgniter(4.0 之前)的组成部分;在 CI4 中,类似功能已迁移至辅助函数或全局函数
- 该数组使用正则表达式模式(如
/ä|æ|ǽ/匹配 ä、æ 或 ǽ)将字符替换为纯英文字母 - 使用此配置的关键函数:Text Helper 中的
convert_accented_characters(),它会遍历此数组并执行preg_replace操作
这并非框架核心代码,而是一个辅助工具,通常位于安装目录的 application/config/foreign_characters.php 路径
涉及的语言与字符集
该数组涵盖了多种书写系统和语言的字符,以实现广泛的音译转换。按类别划分如下(含代码示例及其语言来源):
- 拉丁字母(西欧):罗曼语系和日耳曼语系中常见的变音符号
- 重音符号(如 ÀÁÂ → A,àáâ → a)用于法语、西班牙语、葡萄牙语、加泰罗尼亚语
- 变音符号(如 Ä → Ae,ä → ae,Ü → Ue)用于德语、瑞典语
- 连字(如 æ → ae 用于丹麦语/挪威语,œ → oe 用于法语)
- 特殊字符(如 ñ → n 用于西班牙语,ł → l 用于波兰语,þ → th 用于冰岛语)
- 希腊字母:希腊字母表中类西里尔字符
- 例如 Γ → G,Δ → Dj,Η → I,Ν → N,Ο → O,Ρ → R,Σ → S,Τ → T(古希腊/现代希腊语)
- 西里尔字母(斯拉夫及东欧语系):基于俄语、乌克兰语、白俄罗斯语等
- 基础字符:А → A,Б → B,В → V,Г → G,Д → D,Ж → Zh,З → Z,П → P,Р → R,С → S,Т → T,Ф → F,Х → Kh,Ц → Ts,Ч → Ch,Ш → Sh,Щ → Shch,Ъ/Ь(软硬音符号)→ 删除(无等效字符),Ю → Yu,Я → Ya
- 扩展字符:Ё/ё → Yo/yo(俄语),Є/є → Ye/ye(乌克兰语),Ї/ї → Yi/yi(乌克兰语),Й → Y(俄语/乌克兰语变体)
- 其他符号/字符:
- ß → ss(德语”尖锐S”)
- ½ →(通常被移除或忽略,未包含在此数组中)
- 数学/希腊扩展符号:ξ → ks,π → p,β → v,μ → m,ψ → ps(用于科学音译)
该配置覆盖了国际网页内容中约 90% 的常见非 ASCII 字符。未列出的字符可能会保留原样或被过滤。处理顺序很重要(通过 preg_replace 执行),确保多字符替换优先进行。对于现代应用程序,建议优先考虑 UTF-8 编码支持而非音译转换。如需调整或扩展此配置,可在辅助文件中进行修改。