Skip to content

Instantly share code, notes, and snippets.

@trhura
Created January 18, 2015 13:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trhura/93f0ddaf1bc14a50f831 to your computer and use it in GitHub Desktop.
Save trhura/93f0ddaf1bc14a50f831 to your computer and use it in GitHub Desktop.
Unicode <-> Zawgyi Converter Generated from paytan
<?php
/* Zawgyi<>Unicode converter python module */
/* Based on rules from Parabaik Myanmar Text Converter */
/* Copyright (C) 2014 Ngwe Tun (Solveware Solution) */
/* Copyright (C) 2014 Thura Hlaing */
/* This file is part of Paytan. */
/* Paytan is free software: you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation, either version 3 of the License, or */
/* (at your option) any later version. */
/* Paytan is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* You should have received a copy of the GNU General Public License */
/* along with Foobar. If not, see <http://www.gnu.org/licenses/>. */
function zg12uni51 ($str) {
$str = preg_replace('/\x{106a}/u',
'ဉ',$str);
$str = preg_replace('/\x{1025}(?=[\x{1039}\x{102c}])/u',
'ဉ',$str);
$str = preg_replace('/\x{1025}\x{102e}/u',
'ဦ',$str);
$str = preg_replace('/\x{106b}/u',
'ည',$str);
$str = preg_replace('/\x{1090}/u',
'ရ',$str);
$str = preg_replace('/\x{1040}/u',
'၀',$str);
$str = preg_replace('/\x{108f}/u',
'န',$str);
$str = preg_replace('/\x{1012}/u',
'ဒ',$str);
$str = preg_replace('/\x{1013}/u',
'ဓ',$str);
$str = preg_replace('/[\x{103d}\x{1087}]/u',
'ွ',$str);
$str = preg_replace('/\x{103c}/u',
'ွ',$str);
$str = preg_replace('/[\x{103b}\x{107e}\x{107f}\x{1080}\x{1081}\x{1082}\x{1083}\x{1084}]/u',
'ြ',$str);
$str = preg_replace('/[\x{103a}\x{107d}]/u',
'ျ',$str);
$str = preg_replace('/\x{103d}\x{103b}/u',
'ျွ',$str);
$str = preg_replace('/\x{108a}/u',
'ွွ',$str);
$str = preg_replace('/\x{103d}\x{103d}/u',
'ွွ',$str);
$str = preg_replace('/((?:\x{1031})?)((?:\x{103c})?)([\x{1000}-\x{1021}])\x{1064}/u',
'ၤ$1$2$3',$str);
$str = preg_replace('/((?:\x{1031})?)((?:\x{103c})?)([\x{1000}-\x{1021}])\x{108b}/u',
'ၤ$1$2$3ိ',$str);
$str = preg_replace('/((?:\x{1031})?)((?:\x{103c})?)([\x{1000}-\x{1021}])\x{108c}/u',
'ၤ$1$2$3ီ',$str);
$str = preg_replace('/((?:\x{1031})?)((?:\x{103c})?)([\x{1000}-\x{1021}])\x{108d}/u',
'ၤ$1$2$3ံ',$str);
$str = preg_replace('/\x{105a}/u',
'ါ်',$str);
$str = preg_replace('/\x{108e}/u',
'ိံ',$str);
$str = preg_replace('/\x{1033}/u',
'ု',$str);
$str = preg_replace('/\x{1034}/u',
'ူ',$str);
$str = preg_replace('/\x{1088}/u',
'ွု',$str);
$str = preg_replace('/\x{1089}/u',
'ွူ',$str);
$str = preg_replace('/\x{1039}/u',
'်',$str);
$str = preg_replace('/[\x{1094}\x{1095}]/u',
'့',$str);
$str = preg_replace('/([\x{1000}-\x{1021}])([\x{102c}\x{102d}\x{102e}\x{1032}\x{1036}]){1,2}([\x{1060}\x{1061}\x{1062}\x{1063}\x{1065}\x{1066}\x{1067}\x{1068}\x{1069}\x{1070}\x{1071}\x{1072}\x{1073}\x{1074}\x{1075}\x{1076}\x{1077}\x{1078}\x{1079}\x{107a}\x{107b}\x{107c}\x{1085}])/u',
'$1$3$2',$str);
$str = preg_replace('/\x{1064}/u',
'င်္',$str);
$str = preg_replace('/\x{104e}/u',
'၎င်း',$str);
$str = preg_replace('/\x{1086}/u',
'ဿ',$str);
$str = preg_replace('/\x{1060}/u',
'္က',$str);
$str = preg_replace('/\x{1061}/u',
'္ခ',$str);
$str = preg_replace('/\x{1062}/u',
'္ဂ',$str);
$str = preg_replace('/\x{1063}/u',
'္ဃ',$str);
$str = preg_replace('/\x{1065}/u',
'္စ',$str);
$str = preg_replace('/[\x{1066}\x{1067}]/u',
'္ဆ',$str);
$str = preg_replace('/\x{1068}/u',
'္ဇ',$str);
$str = preg_replace('/\x{1069}/u',
'္ဈ',$str);
$str = preg_replace('/\x{106c}/u',
'္ဋ',$str);
$str = preg_replace('/\x{1070}/u',
'္ဏ',$str);
$str = preg_replace('/[\x{1071}\x{1072}]/u',
'္တ',$str);
$str = preg_replace('/[\x{1073}\x{1074}]/u',
'္ထ',$str);
$str = preg_replace('/\x{1075}/u',
'္ဒ',$str);
$str = preg_replace('/\x{1076}/u',
'္ဓ',$str);
$str = preg_replace('/\x{1077}/u',
'္န',$str);
$str = preg_replace('/\x{1078}/u',
'္ပ',$str);
$str = preg_replace('/\x{1079}/u',
'္ဖ',$str);
$str = preg_replace('/\x{107a}/u',
'္ဗ',$str);
$str = preg_replace('/\x{107b}/u',
'္ဘ',$str);
$str = preg_replace('/\x{107c}/u',
'္မ',$str);
$str = preg_replace('/\x{1085}/u',
'္လ',$str);
$str = preg_replace('/\x{106d}/u',
'္ဌ',$str);
$str = preg_replace('/\x{1091}/u',
'ဏ္ဍ',$str);
$str = preg_replace('/\x{1092}/u',
'ဋ္ဌ',$str);
$str = preg_replace('/\x{1097}/u',
'ဋ္ဋ',$str);
$str = preg_replace('/\x{106f}/u',
'ဎ္ဍ',$str);
$str = preg_replace('/\x{106e}/u',
'ဍ္ဍ',$str);
$str = preg_replace('/(\x{103c})([\x{1000}-\x{1021}])((?:\x{1039}[\x{1000}-\x{1021}])?)/u',
'$2$3$1',$str);
$str = preg_replace('/(\x{103d})(\x{103d})([\x{103b}\x{103c}])/u',
'$3$2$1',$str);
$str = preg_replace('/(\x{103d})([\x{103b}\x{103c}])/u',
'$2$1',$str);
$str = preg_replace('/(\x{103d})([\x{103b}\x{103c}])/u',
'$2$1',$str);
$str = preg_replace('/(?<=([\x{1000}-\x{101c}\x{101e}-\x{102a}\x{102c}\x{102e}-\x{103d}\x{104c}-\x{109f}]))(\x{1040})(?=\s)?/u',
'ဝ',$str);
$str = preg_replace('/(?<=(\x{101d}))(\x{1040})(?=\s)?/u',
'ဝ',$str);
$str = preg_replace('/(?<=([\x{1000}-\x{101c}\x{101e}-\x{102a}\x{102c}\x{102e}-\x{103d}\x{104c}-\x{109f}\s]))(\x{1047})/u',
'ရ',$str);
$str = preg_replace('/(\x{1047})(?=[\x{1000}-\x{101c}\x{101e}-\x{102a}\x{102c}\x{102e}-\x{103d}\x{104c}-\x{109f}\s])/u',
'ရ',$str);
$str = preg_replace('/((?:\x{1031})?)([\x{1000}-\x{1021}])((?:\x{1039}[\x{1000}-\x{1021}])?)((?:[\x{102d}\x{102e}\x{1032}])?)([\x{1036}\x{1037}\x{1038}]{0,2})([\x{103b}-\x{103d}]{0,3})((?:[\x{102f}\x{1030}])?)([\x{1036}\x{1037}\x{1038}]{0,2})((?:[\x{102d}\x{102e}\x{1032}])?)/u',
'$2$3$6$1$4$9$7$5$8',$str);
$str = preg_replace('/\x{1036}\x{102f}/u',
'ုံ',$str);
$str = preg_replace('/(\x{103a})(\x{1037})/u',
'$2$1',$str);
return $str;
}
function uni512zg1 ($str) {
$str = preg_replace('/\x{104e}\x{1004}\x{103a}\x{1038}/u',
'၎',$str);
$str = preg_replace('/\x{102b}\x{103a}/u',
'ၚ',$str);
$str = preg_replace('/\x{102d}\x{1036}/u',
'ႎ',$str);
$str = preg_replace('/\x{103f}/u',
'ႆ',$str);
$str = preg_replace('/(?<=\x{102f})\x{1037}/u',
'႔',$str);
$str = preg_replace('/(?<=\x{102f}\x{1036})\x{1037}/u',
'႔',$str);
$str = preg_replace('/(?<=\x{1030})\x{1037}/u',
'႔',$str);
$str = preg_replace('/(?<=\x{1030}\x{1036})\x{1037}/u',
'႔',$str);
$str = preg_replace('/(?<=\x{1014})\x{1037}/u',
'႔',$str);
$str = preg_replace('/(?<=\x{1014}[\x{103a}\x{1032}])\x{1037}/u',
'႔',$str);
$str = preg_replace('/(?<=\x{103b})\x{1037}/u',
'႕',$str);
$str = preg_replace('/(?<=\x{103b}[\x{1032}\x{1036}])\x{1037}/u',
'႕',$str);
$str = preg_replace('/(?<=\x{103d})\x{1037}/u',
'႕',$str);
$str = preg_replace('/(?<=\x{103d}[\x{1032}])\x{1037}/u',
'႕',$str);
$str = preg_replace('/(?<=[\x{103b}\x{103c}\x{103d}])\x{102f}/u',
'ဳ',$str);
$str = preg_replace('/(?<=[\x{103b}\x{103c}\x{103d}][\x{102d}\x{1036}])\x{102f}/u',
'ဳ',$str);
$str = preg_replace('/(?<=(\x{1039}[\x{1000}-\x{1021}]))\x{102f}/u',
'ဳ',$str);
$str = preg_replace('/(?<=(\x{1039}[\x{1000}-\x{1021}])[\x{102d}\x{1036}])\x{102f}/u',
'ဳ',$str);
$str = preg_replace('/(?<=[\x{100a}\x{100c}\x{1020}\x{1025}\x{1029}])\x{102f}/u',
'ဳ',$str);
$str = preg_replace('/(?<=[\x{100a}\x{100c}\x{1020}\x{1025}\x{1029}][\x{102d}\x{1036}])\x{102f}/u',
'ဳ',$str);
$str = preg_replace('/(?<=[\x{103b}\x{103c}])\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=[\x{103b}\x{103c}][\x{103d}])\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=[\x{103b}\x{103c}][\x{103e}])\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=[\x{103b}\x{103c}][\x{102d}\x{1036}])\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=[\x{103b}\x{103c}][\x{103d}][\x{103e}])\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=[\x{103b}\x{103c}][\x{103d}][\x{102d}\x{1036}])\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=[\x{103b}\x{103c}][\x{103e}][\x{102d}\x{1036}])\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=[\x{103b}\x{103c}][\x{103d}][\x{103e}][\x{102d}\x{1036}])\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=(\x{1039}[\x{1000}-\x{1021}]))\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=(\x{1039}[\x{1000}-\x{1021}])[\x{102d}\x{1036}])\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=[\x{100a}\x{100c}\x{1020}\x{1025}\x{1029}])\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=[\x{100a}\x{100c}\x{1020}\x{1025}\x{1029}][\x{102d}\x{1036}])\x{1030}/u',
'ဴ',$str);
$str = preg_replace('/(?<=\x{103c})\x{103e}/u',
'ႇ',$str);
$str = preg_replace('/\x{1009}(?=[\x{103a}])/u',
'ဥ',$str);
$str = preg_replace('/\x{1009}(?=\x{1039}[\x{1000}-\x{1021}])/u',
'ဥ',$str);
$str = preg_replace('/([\x{1000}-\x{1021}\x{1029}])((?:\x{1039}[\x{1000}-\x{1021}])?)((?:[\x{103b}-\x{103e}\x{1087}]*)?)\x{1031}/u',
'ေ$1$2$3',$str);
$str = preg_replace('/([\x{1000}-\x{1021}\x{1029}])((?:\x{1039}[\x{1000}-\x{1021}\x{1000}-\x{1021}])?)(\x{103c})/u',
'$3$1$2',$str);
$str = preg_replace('/\x{1004}\x{103a}\x{1039}/u',
'ၤ',$str);
$str = preg_replace('/(\x{1064})((?:\x{1031})?)((?:\x{103c})?)([\x{1000}-\x{1021}])\x{102d}/u',
'$2$3$4ႋ',$str);
$str = preg_replace('/(\x{1064})((?:\x{1031})?)((?:\x{103c})?)([\x{1000}-\x{1021}])\x{102e}/u',
'$2$3$4ႌ',$str);
$str = preg_replace('/(\x{1064})((?:\x{1031})?)((?:\x{103c})?)([\x{1000}-\x{1021}])\x{1036}/u',
'$2$3$4ႍ',$str);
$str = preg_replace('/(\x{1064})((?:\x{1031})?)((?:\x{103c})?)([\x{1000}-\x{1021}])/u',
'$2$3$4ၤ',$str);
$str = preg_replace('/\x{100a}(?=[\x{1039}\x{102f}\x{1030}])/u',
'ၫ',$str);
$str = preg_replace('/\x{100a}/u',
'ည',$str);
$str = preg_replace('/\x{101b}(?=[\x{102f}\x{1030}])/u',
'႐',$str);
$str = preg_replace('/\x{101b}/u',
'ရ',$str);
$str = preg_replace('/\x{1014}(?=[\x{1039}\x{103d}\x{103e}\x{102f}\x{1030}])/u',
'ႏ',$str);
$str = preg_replace('/\x{1014}/u',
'န',$str);
$str = preg_replace('/\x{1039}\x{1000}/u',
'ၠ',$str);
$str = preg_replace('/\x{1039}\x{1001}/u',
'ၡ',$str);
$str = preg_replace('/\x{1039}\x{1002}/u',
'ၢ',$str);
$str = preg_replace('/\x{1039}\x{1003}/u',
'ၣ',$str);
$str = preg_replace('/\x{1039}\x{1005}/u',
'ၥ',$str);
$str = preg_replace('/\x{1039}\x{1006}/u',
'ၦ',$str);
$str = preg_replace('/(?<=[\x{1001}\x{1002}\x{1004}\x{1005}\x{1007}\x{1012}\x{1013}\x{108f}\x{1015}\x{1016}\x{1017}\x{1019}\x{101d}])\x{1066}/u',
'ၧ',$str);
$str = preg_replace('/\x{1039}\x{1007}/u',
'ၨ',$str);
$str = preg_replace('/\x{1039}\x{1008}/u',
'ၩ',$str);
$str = preg_replace('/\x{1039}\x{100f}/u',
'ၰ',$str);
$str = preg_replace('/\x{1039}\x{1010}/u',
'ၱ',$str);
$str = preg_replace('/(?<=[\x{1001}\x{1002}\x{1004}\x{1005}\x{1007}\x{1012}\x{1013}\x{108f}\x{1015}\x{1016}\x{1017}\x{1019}\x{101d}])\x{1071}/u',
'ၲ',$str);
$str = preg_replace('/\x{1039}\x{1011}/u',
'ၳ',$str);
$str = preg_replace('/(?<=[\x{1001}\x{1002}\x{1004}\x{1005}\x{1007}\x{1012}\x{1013}\x{108f}\x{1015}\x{1016}\x{1017}\x{1019}\x{101d}])\x{1073}/u',
'ၴ',$str);
$str = preg_replace('/\x{1039}\x{1012}/u',
'ၵ',$str);
$str = preg_replace('/\x{1039}\x{1013}/u',
'ၶ',$str);
$str = preg_replace('/\x{1039}\x{1014}/u',
'ၷ',$str);
$str = preg_replace('/\x{1039}\x{1015}/u',
'ၸ',$str);
$str = preg_replace('/\x{1039}\x{1016}/u',
'ၹ',$str);
$str = preg_replace('/\x{1039}\x{1017}/u',
'ၺ',$str);
$str = preg_replace('/\x{1039}\x{1018}/u',
'ၻ',$str);
$str = preg_replace('/\x{1039}\x{1019}/u',
'ၼ',$str);
$str = preg_replace('/\x{1039}\x{101c}/u',
'ႅ',$str);
$str = preg_replace('/\x{100f}\x{1039}\x{100d}/u',
'႑',$str);
$str = preg_replace('/\x{100b}\x{1039}\x{100c}/u',
'႒',$str);
$str = preg_replace('/\x{1039}\x{100c}/u',
'ၭ',$str);
$str = preg_replace('/\x{100b}\x{1039}\x{100b}/u',
'႗',$str);
$str = preg_replace('/\x{1039}\x{100b}/u',
'ၬ',$str);
$str = preg_replace('/\x{100e}\x{1039}\x{100d}/u',
'ၯ',$str);
$str = preg_replace('/\x{100d}\x{1039}\x{100d}/u',
'ၮ',$str);
$str = preg_replace('/\x{1009}(?=\x{103a})/u',
'ဥ',$str);
$str = preg_replace('/\x{1025}(?=[\x{1039}\x{102f}\x{1030}])/u',
'ၪ',$str);
$str = preg_replace('/\x{1025}/u',
'ဥ',$str);
$str = preg_replace('/\x{103a}/u',
'္',$str);
$str = preg_replace('/\x{103b}\x{103d}\x{103e}/u',
'ၽႊ',$str);
$str = preg_replace('/\x{103d}\x{103e}/u',
'ႊ',$str);
$str = preg_replace('/\x{103b}/u',
'်',$str);
$str = preg_replace('/\x{103c}/u',
'ျ',$str);
$str = preg_replace('/\x{103d}/u',
'ြ',$str);
$str = preg_replace('/\x{103e}/u',
'ွ',$str);
$str = preg_replace('/\x{103a}(?=[\x{103c}\x{103d}\x{108a}])/u',
'ၽ',$str);
$str = preg_replace('/(?<=\x{100a}(?:[\x{102d}\x{102e}\x{1036}\x{108b}\x{108c}\x{108d}\x{108e}]))\x{103d}/u',
'ႇ',$str);
$str = preg_replace('/(?<=\x{100a})\x{103d}/u',
'ႇ',$str);
$str = preg_replace('/\x{103b}(?=[\x{1000}\x{1003}\x{1006}\x{100f}\x{1010}\x{1011}\x{1018}\x{101a}\x{101c}\x{101e}\x{101f}\x{1021}])/u',
'ၾ',$str);
$str = preg_replace('/\x{107e}([\x{1000}-\x{1021}\x{108f}])(?=[\x{102d}\x{102e}\x{1036}\x{108b}\x{108c}\x{108d}\x{108e}])/u',
'ႀ$1',$str);
$str = preg_replace('/\x{107e}([\x{1000}-\x{1021}\x{108f}])(?=[\x{103c}\x{108a}])/u',
'ႂ$1',$str);
$str = preg_replace('/\x{103b}([\x{1000}-\x{1021}\x{108f}])(?=[\x{102d}\x{102e}\x{1036}\x{108b}\x{108c}\x{108d}\x{108e}])/u',
'ၿ$1',$str);
$str = preg_replace('/\x{103b}([\x{1000}-\x{1021}\x{108f}])(?=[\x{103c}\x{108a}])/u',
'ႁ$1',$str);
$str = preg_replace('/(?<=\x{1014})\x{1037}/u',
'႔',$str);
$str = preg_replace('/(?<=\x{1014}[\x{103a}\x{1032}])\x{1037}/u',
'႔',$str);
$str = preg_replace('/(?<=\x{1033})\x{1094}/u',
'႕',$str);
$str = preg_replace('/(?<=\x{1033}[\x{1036}])\x{1094}/u',
'႕',$str);
$str = preg_replace('/(?<=\x{1034})\x{1094}/u',
'႕',$str);
$str = preg_replace('/(?<=\x{1034}[\x{1036}])\x{1094}/u',
'႕',$str);
$str = preg_replace('/(?<=[\x{103c}\x{103d}\x{108a}])\x{1037}/u',
'႕',$str);
$str = preg_replace('/(?<=[\x{103c}\x{103d}\x{108a}][\x{1032}])\x{1037}/u',
'႕',$str);
return $str;
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment