diff --git a/abjad.php b/abjad.php index fa8688b..cfbd213 100644 --- a/abjad.php +++ b/abjad.php @@ -8,6 +8,7 @@ function abjad($word) { $word = trim($word); + $word = convert_non_persian_chars_to_persian($word); $word = str_replace(array('َ','ُ','ِ','ّ','ً','ٌ','ٍ','ـ','ْ'), '', $word); $word = str_replace(array('گ','چ','پ','ژ','ة','آ'),array('ک','ج','ب','ز','ه','ا'),$word); $word = str_replace(array(')','(','+','$','!','~','#','%','^','&','*','-',' ','/','`','«','»','ء'),'',$word); @@ -25,3 +26,303 @@ function calculate_string( $mathString ) { else return 0; } +function convert_non_persian_chars_to_persian ($word) { + //main goal: arabic chars: from ؀ U+0600 (؀) to ۿ U+06FF (ۿ) + //source: https://unicode-table.com/en + // published on: https://gist.github.com/amirmojiry/ef0b8df7e31287192be81917d4ed5324 + $right_chars = array ( + 'ا', + 'ب', + 'پ', + 'ت', + 'ث', + 'ج', + 'چ', + 'ح', + 'خ', + 'د', + 'ذ', + 'ر', + 'ز', + 'ژ', + 'س', + 'ش', + 'ص', + 'ض', + 'ط', + 'ظ', + 'ع', + 'غ', + 'ف', + 'ق', + 'ک', + 'گ', + 'ل', + 'م', + 'ن', + 'و', + 'ه', + 'ی', + '‌', /* Zero Width Non-Joiner (nim fasele): U+200C (Unicode) or ‌ (HTML) */ + ); + //first char of every array is right char + $all_like_chars = array ( + $alef = array ( + 'ا', + 'ݳ', + 'ݴ', + ), + $be = array ( + 'ب', + 'ٻ', + 'ڀ', + 'ݑ', + 'ݔ', + 'ݕ', + 'ݖ', + ), + $pe = array ( + 'پ', + 'ݐ', + 'ݒ', + 'ݓ', + ), + $te = array ( + 'ت', + 'ٺ', + 'ټ', + 'ٽ', + 'ٿ', + ), + $se = array ( + 'ث', + 'ٹ', + ), + $jim = array ( + 'ج', + 'ڃ', + 'ڄ', + 'ݼ', + ), + $che = array ( + 'چ', + 'ڇ', + 'ڿ', + 'ݘ', + 'ݮ', + 'ݯ', + ), + $he = array ( + 'ح', + 'ځ', + 'ڂ', + 'څ', + 'ݗ', + ), + $khe = array ( + 'خ', + 'ݲ', + ), + $dal = array ( + 'د', + 'ڈ', + 'ډ', + 'ڊ', + 'ڋ', + 'ڌ', + 'ڍ', + 'ڎ', + 'ڏ', + 'ڐ', + 'ݙ', + 'ݚ', + 'ۮ', + ), + $zal = array ( + 'ذ', + ), + $re = array ( + 'ر', + 'ړ', + 'ڔ', + 'ڕ', + 'ږ', + 'ݛ', + 'ހ', + 'ۯ', + 'ڑ', + 'ڒ', + 'ݬ', + 'ݫ', + 'ڗ', + 'ڙ', + 'ݱ', + ), + $ze = array ( + 'ز', + ), + $zhe = array ( + 'ژ', + ), + $sin = array ( + 'س', + 'ښ', + 'ڛ', + 'ݭ', + 'ݽ', + ), + $shin = array ( + 'ش', + 'ݜ', + 'ڜ', + 'ݰ', + 'ݾ', + 'ۺ', + ), + $sad = array ( + 'ص', + 'ڝ', + 'ڞ', + ), + $zad = array ( + 'ض', + 'ۻ', + ), + $ta = array ( + 'ط', + 'ڟ', + ), + $za = array ( + 'ظ', + ), + $ain = array ( + 'ع', + ), + $ghain = array ( + 'غ', + 'ڠ', + 'ݝ', + 'ݞ', + 'ݟ', + 'ۼ', + ), + $fe = array ( + 'ف', + 'ڡ', + 'ڢ', + 'ڣ', + 'ڤ', + 'ڥ', + 'ڦ', + 'ݠ', + 'ݡ', + ), + $ghaf = array ( + 'ق', + 'ٯ', + 'ڧ', + 'ڨ', + ), + $kaf = array ( + 'ک', + 'ػ', + 'ؼ', + 'ك', + 'ڪ', + 'ګ', + 'ڬ', + 'ڭ', + 'ڮ', + 'ݢ', + 'ݣ', + 'ݤ', + 'ݿ', + ), + $gaf = array ( + 'گ', + 'ڰ', + 'ڱ', + 'ڲ', + 'ڳ', + 'ڴ', + ), + $lam = array ( + 'ل', + 'ڵ', + 'ڶ', + 'ڷ', + 'ڸ', + 'ݪ', + ), + $mim = array ( + 'م', + 'ݥ', + 'ݦ', + '۾', + ), + $noon = array ( + 'ن', + 'ڹ', + 'ں', + 'ڻ', + 'ڼ', + 'ڽ', + 'ݧ', + 'ݨ', + 'ݩ', + ), + $vav = array ( + 'و', + 'ٶ', + 'ٷ', + 'ۄ', + 'ۅ', + 'ۆ', + 'ۇ', + 'ۈ', + 'ۉ', + 'ۊ', + 'ۋ', + 'ۏ', + 'ݸ', + 'ݹ', + ), + $ha = array ( + 'ه', + 'ھ', + 'ہ', + 'ۂ', + 'ۃ', + 'ە', + 'ۿ', + ), + $ye = array ( + 'ی', + 'ؽ', + 'ؾ', + 'ؿ', + 'ي', + 'ٸ', + 'ۍ', + 'ێ', + 'ې', + 'ۑ', + 'ے', + 'ۓ', + 'ݵ', + 'ݶ', + 'ݷ', + 'ݺ', + 'ݻ', + ), + //32nd + $nim_fasele = array ( + '‌', /* Zero Width Non-Joiner (nim fasele): U+200C (Unicode) or ‌ (HTML) */ + '¬', + ), + ); + for ($i = 0; $i <= 32; $i++) { + $word = str_replace ($all_like_chars[$i], $right_chars[$i], $word); + } + return $word; + } \ No newline at end of file