visuddhinanda 1 month ago
parent
commit
d225d800f2
1 changed files with 0 additions and 738 deletions
  1. 0 738
      api-v12/app/Services/PaliTransliterationService.php

+ 0 - 738
api-v12/app/Services/PaliTransliterationService.php

@@ -1,738 +0,0 @@
-<?php
-
-namespace App\Services;
-
-/**
- * 控制器中
-public function convert(PaliTransliterationService $pali)
-{
-    $result = $pali->myanmarToRoman('သမ္မာ');
-}
-
-// 或者使用 app() 助手函数
-$pali = app(PaliTransliterationService::class);
-$result = $pali->thaiToRoman('สมฺมา');
- */
-class PaliTransliterationService
-{
-    /**
-     * 缅文字母映射表
-     */
-    private const MYANMAR_CHARS = [
-        "ႁႏၵ",
-        "ခ္",
-        "ဃ္",
-        "ဆ္",
-        "ဈ္",
-        "ည္",
-        "ဌ္",
-        "ဎ္",
-        "ထ္",
-        "ဓ္",
-        "ဖ္",
-        "ဘ္",
-        "က္",
-        "ဂ္",
-        "စ္",
-        "ဇ္",
-        "ဉ္",
-        "ဠ္",
-        "ဋ္",
-        "ဍ္",
-        "ဏ္",
-        "တ္",
-        "ဒ္",
-        "န္",
-        "ဟ္",
-        "ပ္",
-        "ဗ္",
-        "မ္",
-        "ယ္",
-        "ရ္",
-        "လ္",
-        "ဝ္",
-        "သ္",
-        "င္",
-        "င်္",
-        "ဿ",
-        "ခ",
-        "ဃ",
-        "ဆ",
-        "ဈ",
-        "စျ",
-        "ည",
-        "ဌ",
-        "ဎ",
-        "ထ",
-        "ဓ",
-        "ဖ",
-        "ဘ",
-        "က",
-        "ဂ",
-        "စ",
-        "ဇ",
-        "ဉ",
-        "ဠ",
-        "ဋ",
-        "ဍ",
-        "ဏ",
-        "တ",
-        "ဒ",
-        "န",
-        "ဟ",
-        "ပ",
-        "ဗ",
-        "မ",
-        "ယ",
-        "ရ",
-        "႐",
-        "လ",
-        "ဝ",
-        "သ",
-        "aျ္",
-        "aွ္",
-        "aြ္",
-        "aြ",
-        "ၱ",
-        "ၳ",
-        "ၵ",
-        "ၶ",
-        "ၬ",
-        "ၭ",
-        "ၠ",
-        "ၡ",
-        "ၢ",
-        "ၣ",
-        "ၸ",
-        "ၹ",
-        "ၺ",
-        "႓",
-        "ၥ",
-        "ၧ",
-        "ၨ",
-        "ၩ",
-        "်",
-        "ျ",
-        "ႅ",
-        "ၼ",
-        "ွ",
-        "ႇ",
-        "ႆ",
-        "ၷ",
-        "ၲ",
-        "႒",
-        "႗",
-        "ၯ",
-        "ၮ",
-        "႑",
-        "kaၤ",
-        "gaၤ",
-        "khaၤ",
-        "ghaၤ",
-        "aှ",
-        "aိံ",
-        "aုံ",
-        "aော",
-        "aေါ",
-        "aအံ",
-        "aဣံ",
-        "aဥံ",
-        "aံ",
-        "aာ",
-        "aါ",
-        "aိ",
-        "aီ",
-        "aု",
-        "aဳ",
-        "aူ",
-        "aေ",
-        "အါ",
-        "အာ",
-        "အ",
-        "ဣ",
-        "ဤ",
-        "ဥ",
-        "ဦ",
-        "ဧ",
-        "ဩ",
-        "ႏ",
-        "ၪ",
-        "a္",
-        "္",
-        "aံ",
-        "ေss",
-        "ေkh",
-        "ေgh",
-        "ေch",
-        "ေjh",
-        "ေññ",
-        "ေṭh",
-        "ေḍh",
-        "ေth",
-        "ေdh",
-        "ေph",
-        "ေbh",
-        "ေk",
-        "ေg",
-        "ေc",
-        "ေj",
-        "ေñ",
-        "ေḷ",
-        "ေṭ",
-        "ေḍ",
-        "ေṇ",
-        "ေt",
-        "ေd",
-        "ေn",
-        "ေh",
-        "ေp",
-        "ေb",
-        "ေm",
-        "ေy",
-        "ေr",
-        "ေl",
-        "ေv",
-        "ေs",
-        "ေy",
-        "ေv",
-        "ေr",
-        "ea",
-        "eā",
-        "၁",
-        "၂",
-        "၃",
-        "၄",
-        "၅",
-        "၆",
-        "၇",
-        "၈",
-        "၉",
-        "၀",
-        "း",
-        "့",
-        "။",
-        "၊"
-    ];
-
-    /**
-     * 罗马巴利字母映射表
-     */
-    private const ROMAN_CHARS = [
-        "ndra",
-        "kh",
-        "gh",
-        "ch",
-        "jh",
-        "ññ",
-        "ṭh",
-        "ḍh",
-        "th",
-        "dh",
-        "ph",
-        "bh",
-        "k",
-        "g",
-        "c",
-        "j",
-        "ñ",
-        "ḷ",
-        "ṭ",
-        "ḍ",
-        "ṇ",
-        "t",
-        "d",
-        "n",
-        "h",
-        "p",
-        "b",
-        "m",
-        "y",
-        "r",
-        "l",
-        "v",
-        "s",
-        "ṅ",
-        "ṅ",
-        "ssa",
-        "kha",
-        "gha",
-        "cha",
-        "jha",
-        "jha",
-        "ñña",
-        "ṭha",
-        "ḍha",
-        "tha",
-        "dha",
-        "pha",
-        "bha",
-        "ka",
-        "ga",
-        "ca",
-        "ja",
-        "ña",
-        "ḷa",
-        "ṭa",
-        "ḍa",
-        "ṇa",
-        "ta",
-        "da",
-        "na",
-        "ha",
-        "pa",
-        "ba",
-        "ma",
-        "ya",
-        "ra",
-        "ra",
-        "la",
-        "va",
-        "sa",
-        "ya",
-        "va",
-        "ra",
-        "ra",
-        "្ta",
-        "្tha",
-        "្da",
-        "្dha",
-        "្ṭa",
-        "្ṭha",
-        "្ka",
-        "្kha",
-        "្ga",
-        "្gha",
-        "្pa",
-        "្pha",
-        "្ba",
-        "្bha",
-        "្ca",
-        "្cha",
-        "្ja",
-        "្jha",
-        "្a",
-        "្ya",
-        "្la",
-        "្ma",
-        "្va",
-        "្ha",
-        "ssa",
-        "na",
-        "ta",
-        "ṭṭha",
-        "ṭṭa",
-        "ḍḍha",
-        "ḍḍa",
-        "ṇḍa",
-        "ṅka",
-        "ṅga",
-        "ṅkha",
-        "ṅgha",
-        "ha",
-        "iṃ",
-        "uṃ",
-        "o",
-        "o",
-        "aṃ",
-        "iṃ",
-        "uṃ",
-        "aṃ",
-        "ā",
-        "ā",
-        "i",
-        "ī",
-        "u",
-        "u",
-        "ū",
-        "e",
-        "ā",
-        "ā",
-        "a",
-        "i",
-        "ī",
-        "u",
-        "ū",
-        "e",
-        "o",
-        "n",
-        "ñ",
-        "",
-        "",
-        "aṃ",
-        "sse",
-        "khe",
-        "ghe",
-        "che",
-        "jhe",
-        "ññe",
-        "ṭhe",
-        "ḍhe",
-        "the",
-        "dhe",
-        "phe",
-        "bhe",
-        "ke",
-        "ge",
-        "ce",
-        "je",
-        "ñe",
-        "ḷe",
-        "ṭe",
-        "ḍe",
-        "ṇe",
-        "te",
-        "de",
-        "ne",
-        "he",
-        "pe",
-        "be",
-        "me",
-        "ye",
-        "re",
-        "le",
-        "ve",
-        "se",
-        "ye",
-        "ve",
-        "re",
-        "e",
-        "o",
-        "1",
-        "2",
-        "3",
-        "4",
-        "5",
-        "6",
-        "7",
-        "8",
-        "9",
-        "0",
-        "\"",
-        "'",
-        ".",
-        ","
-    ];
-
-    /**
-     * 泰文字母映射表
-     */
-    private const THAI_CHARS = [
-        "นฺทฺร",
-        "ขฺ",
-        "ฆฺ",
-        "ฉฺ",
-        "ฌฺ",
-        "ญฺ",
-        "ฐฺ",
-        "ฑฺ",
-        "ถฺ",
-        "ธฺ",
-        "ผฺ",
-        "ภฺ",
-        "กฺ",
-        "คฺ",
-        "จฺ",
-        "ชฺ",
-        "ญฺ",
-        "ฬฺ",
-        "ฏฺ",
-        "ฑฺ",
-        "ณฺ",
-        "ตฺ",
-        "ทฺ",
-        "นฺ",
-        "หฺ",
-        "ปฺ",
-        "พฺ",
-        "มฺ",
-        "ยฺ",
-        "รฺ",
-        "ลฺ",
-        "วฺ",
-        "สฺ",
-        "งฺ",
-        "งฺ",
-        "สฺส",
-        "ข",
-        "ฆ",
-        "ฉ",
-        "ฌ",
-        "ฌ",
-        "ญฺญ",
-        "ฐ",
-        "ฑ",
-        "ถ",
-        "ธ",
-        "ผ",
-        "ภ",
-        "ก",
-        "ค",
-        "จ",
-        "ช",
-        "ญ",
-        "ฬ",
-        "ฏ",
-        "ฑ",
-        "ณ",
-        "ต",
-        "ท",
-        "น",
-        "ห",
-        "ป",
-        "พ",
-        "ม",
-        "ย",
-        "ร",
-        "ร",
-        "ล",
-        "ว",
-        "ส",
-        "ฺย",
-        "ฺว",
-        "ฺร",
-        "ร",
-        "ตฺต",
-        "ตฺถ",
-        "ทฺท",
-        "ทฺธ",
-        "ฏฺฏ",
-        "ฏฺฐ",
-        "กฺก",
-        "ขฺข",
-        "คฺค",
-        "ฆฺฆ",
-        "ปฺป",
-        "ผฺผ",
-        "พฺพ",
-        "ภฺภ",
-        "จฺจ",
-        "ฉฺฉ",
-        "ชฺช",
-        "ฌฺฌ",
-        "ฺ",
-        "ฺย",
-        "ฺล",
-        "ฺม",
-        "ฺว",
-        "ฺห",
-        "สฺส",
-        "น",
-        "ต",
-        "ฏฺฐ",
-        "ฏฺฏ",
-        "ฑฺฒ",
-        "ฑฺฑ",
-        "ณฺฑ",
-        "งฺก",
-        "งฺค",
-        "งฺข",
-        "งฺฆ",
-        "ห",
-        "ิํ",
-        "ุํ",
-        "โอ",
-        "โอ",
-        "อํ",
-        "อิํ",
-        "อุํ",
-        "ํ",
-        "า",
-        "า",
-        "ิ",
-        "ี",
-        "ุ",
-        "ุ",
-        "ู",
-        "เ",
-        "อา",
-        "อา",
-        "อ",
-        "อิ",
-        "อี",
-        "อุ",
-        "อู",
-        "เอ",
-        "โอ",
-        "น",
-        "ญ",
-        "",
-        "ฺ",
-        "ํ",
-        "เสฺส",
-        "เข",
-        "เฆ",
-        "เฉ",
-        "เฌ",
-        "เญฺญ",
-        "เฐ",
-        "เฑ",
-        "เถ",
-        "เธ",
-        "เผ",
-        "เภ",
-        "เก",
-        "เค",
-        "เจ",
-        "เช",
-        "เญ",
-        "เฬ",
-        "เฏ",
-        "เฑ",
-        "เณ",
-        "เต",
-        "เท",
-        "เน",
-        "เห",
-        "เป",
-        "เพ",
-        "เม",
-        "เย",
-        "เร",
-        "เล",
-        "เว",
-        "เส",
-        "เย",
-        "เว",
-        "เร",
-        "เอ",
-        "โอ",
-        "๑",
-        "๒",
-        "๓",
-        "๔",
-        "๕",
-        "๖",
-        "๗",
-        "๘",
-        "๙",
-        "๐",
-        "ํ",
-        "ฺ",
-        "ฯ",
-        "ฯลฯ"
-    ];
-
-    /**
-     * 缅文转罗马巴利
-     *
-     * @param string $input
-     * @return string
-     */
-    public function myanmarToRoman(string $input): string
-    {
-        return str_replace(self::MYANMAR_CHARS, self::ROMAN_CHARS, $input);
-    }
-
-    /**
-     * 罗马巴利转缅文
-     *
-     * @param string $input
-     * @return string
-     */
-    public function romanToMyanmar(string $input): string
-    {
-        // 手动构建映射数组,遇到重复的键时保留第一个
-        $mapping = [];
-        foreach (self::ROMAN_CHARS as $index => $roman) {
-            if (!isset($mapping[$roman])) {
-                $mapping[$roman] = self::MYANMAR_CHARS[$index];
-            }
-        }
-
-        // 按键长度降序排序,优先匹配较长的字符串
-        uksort($mapping, function ($a, $b) {
-            $lenDiff = strlen($b) - strlen($a);
-            if ($lenDiff !== 0) {
-                return $lenDiff;
-            }
-            return strcmp($a, $b);
-        });
-
-        return str_replace(array_keys($mapping), array_values($mapping), $input);
-    }
-
-    /**
-     * 泰文转罗马巴利
-     *
-     * @param string $input
-     * @return string
-     */
-    public function thaiToRoman(string $input): string
-    {
-        return str_replace(self::THAI_CHARS, self::ROMAN_CHARS, $input);
-    }
-
-    /**
-     * 罗马巴利转泰文
-     *
-     * @param string $input
-     * @return string
-     */
-    public function romanToThai(string $input): string
-    {
-        // 手动构建映射数组,遇到重复的键时保留第一个
-        $mapping = [];
-        foreach (self::ROMAN_CHARS as $index => $roman) {
-            if (!isset($mapping[$roman])) {
-                $mapping[$roman] = self::THAI_CHARS[$index];
-            }
-        }
-
-        // 按键长度降序排序,优先匹配较长的字符串
-        uksort($mapping, function ($a, $b) {
-            $lenDiff = strlen($b) - strlen($a);
-            if ($lenDiff !== 0) {
-                return $lenDiff;
-            }
-            return strcmp($a, $b);
-        });
-
-        return str_replace(array_keys($mapping), array_values($mapping), $input);
-    }
-
-    /**
-     * 缅文转泰文
-     *
-     * @param string $input
-     * @return string
-     */
-    public function myanmarToThai(string $input): string
-    {
-        $roman = $this->myanmarToRoman($input);
-        return $this->romanToThai($roman);
-    }
-
-    /**
-     * 泰文转缅文
-     *
-     * @param string $input
-     * @return string
-     */
-    public function thaiToMyanmar(string $input): string
-    {
-        $roman = $this->thaiToRoman($input);
-        return $this->romanToMyanmar($roman);
-    }
-
-    /**
-     * 自动检测并转换为罗马巴利
-     *
-     * @param string $input
-     * @return string
-     */
-    public function toRoman(string $input): string
-    {
-        // 检测是否包含缅文字符
-        if (preg_match('/[\x{1000}-\x{109F}]/u', $input)) {
-            return $this->myanmarToRoman($input);
-        }
-
-        // 检测是否包含泰文字符
-        if (preg_match('/[\x{0E00}-\x{0E7F}]/u', $input)) {
-            return $this->thaiToRoman($input);
-        }
-
-        // 默认返回原文
-        return $input;
-    }
-}