Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中读取非字符(如阿拉伯语单词)_Php_Utf 8_Utf8 Decode - Fatal编程技术网

如何在PHP中读取非字符(如阿拉伯语单词)

如何在PHP中读取非字符(如阿拉伯语单词),php,utf-8,utf8-decode,Php,Utf 8,Utf8 Decode,我正在将一个只有一列的CSV文件转换为PHP数组。Csv列包含一些非英语字符,如阿拉伯语字符,但PHP正确读取英语字符,但将阿拉伯语字符更改为一些数字。这是我的代码示例 <?php function str_to_csv( $row ) { if( $row=='' ) { return array(); } $a = array(); $src = explode(',', $row ); do{ $p

我正在将一个只有一列的CSV文件转换为PHP数组。Csv列包含一些非英语字符,如阿拉伯语字符,但PHP正确读取英语字符,但将阿拉伯语字符更改为一些数字。这是我的代码示例

 <?php

    function str_to_csv( $row )
    {
    if( $row=='' )
    {
    return array();
    }
    $a = array();
    $src = explode(',', $row );
    do{
    $p = array_shift($src);
    while( mb_substr_count($p,'"') % 2 != 0 )
    {
    if( count($src)==0 ){ return false; }
    $p .= ','.array_shift($src);
    }
    $match = null;
    if( preg_match('/^"(.+)"[
    ]*$/', $p, $match ))
    {
    $p = $match[1];
    }
    $a[] = str_replace('""','"',$p);
    }while( count($src) > 0 );
    return $a;
    }


    function file_getcsv( $f )
    {
    $line = fgets( $f );
    while( ($a = str_to_csv($line))===false )
    {
    if( feof($f) ){ return false; }
    $line .= "\n".fgets( $f );
    }
    return $a;
    }


    function file_to_csv( $filename )
    {
    ini_set("auto_detect_line_endings", true);
    $a = array();
    $f = fopen($filename,'r');
    while( !feof($f) )
    {
    $rec = file_getcsv($f);
    if( $rec===false ){ return false; }
    if( !empty($rec) )
    {
    $a[] = $rec;
    }
    }
    fclose($f);
    return $a;
    }

    $data = file_to_csv('club3.csv');

    echo '<pre>';print_r($data);
    ?>
当我进行var_转储时,数组是这样的

function fixArabicCharactersAndCreateProbablyString($word)
{

    $new_word = array();
    $char_type = array();
    $isolated_chars = array('ا', 'د', 'ذ', 'أ', 'آ', 'ر', 'ؤ', 'ء', 'ز', 'و', 'ى', 'ة', 'إ');
    $alef = array('أ','ا','إ','آ');
    $lam = array('ل');
    $al_char = array();
    $all_chars = array
        (
            'ا' => array(
                'la_beg'        =>   '&#xFEFB;',
                'la_end'        =>   '&#xFEFC;',
                'middle'        =>   '&#xFE8E;',

                'isolated'      =>   '&#xFE8D;'
                ),
            'إ' => array(
                'la_beg'        =>   '&#xFEF9;',
                'la_end'        =>   '&#xFEFA;',
                'middle'        =>   '&#xFE88;',

                'isolated'      =>   '&#xFE87;'
                ),

            'ؤ' => array(

                'middle'        =>   '&#xFE85;',

                'isolated'      =>   '&#xFE86;'
                ),
            'ء' => array(
                'middle'        =>   '&#xFE80;',
                'isolated'      =>   '&#xFE80;'
                ),
            'أ' => array(
                'la_beg'        =>   '&#xFEF7;',
                'la_end'        =>   '&#xFEF8;',
                'middle'        =>   '&#xFE84;',

                'isolated'      =>   '&#xFE83;'
                ),
            'آ' => array(
                'la_beg'        =>   '&#xFEF5;',
                'la_end'        =>   '&#xFEF6;',
                'middle'        =>   '&#xFE82;',

                'isolated'      =>   '&#xFE81;'
                ),
            'ى' => array(

                'middle'        =>   '&#xFEF0;',

                'isolated'      =>   '&#xFEEF;'
                ),
            'ب' => array(
                'beginning'     =>   '&#xFE91;',
                'middle'        =>   '&#xFE92;',
                'end'           =>   '&#xFE90;',
                'isolated'      =>   '&#xFE8F;'
                ),
            'ت' => array(
                'beginning'     =>   '&#xFE97;',
                'middle'        =>   '&#xFE98;',
                'end'           =>   '&#xFE96;',
                'isolated'      =>   '&#xFE95;'
                ),
            'ث' => array(
                'beginning'     =>   '&#xFE9B;',
                'middle'        =>   '&#xFE9C;',
                'end'           =>   '&#xFE9A;',
                'isolated'      =>   '&#xFE99;'
                ),
            'ج' => array(
                'beginning'     =>   '&#xFE9F;',
                'middle'        =>   '&#xFEA0;',
                'end'           =>   '&#xFE9E;',
                'isolated'      =>   '&#xFE9D;'
                ),
            'ح' => array(
                'beginning'     =>   '&#xFEA3;',
                'middle'        =>   '&#xFEA4;',
                'end'           =>   '&#xFEA2;',
                'isolated'      =>   '&#xFEA1;'
                ),
            'خ' => array(
                'beginning'     =>   '&#xFEA7;',
                'middle'        =>   '&#xFEA8;',
                'end'           =>   '&#xFEA6;',
                'isolated'      =>   '&#xFEA5;'
                ),
            'د' => array(
                'middle'        =>   '&#xFEAA;',
                'isolated'      =>   '&#xFEA9;'
                ),
            'ذ' => array(
                'middle'        =>   '&#xFEAC;',
                'isolated'      =>   '&#xFEAB;'
                ),
            'ر' => array(
                'middle'        =>   '&#xFEAE;',
                'isolated'      =>   '&#xFEAD;'
                ),
            'ز' => array(
                'middle'        =>   '&#xFEB0;',
                'isolated'      =>   '&#xFEAF;'
                ),
            'س' => array(
                'beginning'     =>   '&#xFEB3;',
                'middle'        =>   '&#xFEB4;',
                'end'           =>   '&#xFEB2;',
                'isolated'      =>   '&#xFEB1;'
                ),
            'ش' => array(
                'beginning'     =>   '&#xFEB7;',
                'middle'        =>   '&#xFEB8;',
                'end'           =>   '&#xFEB6;',
                'isolated'      =>   '&#xFEB5;'
                ),
            'ص' => array(
                'beginning'     =>   '&#xFEBB;',
                'middle'        =>   '&#xFEBC;',
                'end'           =>   '&#xFEBA;',
                'isolated'      =>   '&#xFEB9;'
                ),
            'ض' => array(
                'beginning'     =>   '&#xFEBF;',
                'middle'        =>   '&#xFEC0;',
                'end'           =>   '&#xFEBE;',
                'isolated'      =>   '&#xFEBD;'
                ),
            'ط' => array(
                'beginning'     =>   '&#xFEC3;',
                'middle'        =>   '&#xFEC4;',
                'end'           =>   '&#xFEC2;',
                'isolated'      =>   '&#xFEC1;'
                ),
            'ظ' => array(
                'beginning'     =>   '&#xFEC7;',
                'middle'        =>   '&#xFEC8;',
                'end'           =>   '&#xFEC6;',
                'isolated'      =>   '&#xFEC5;'
                ),
            'ع' => array(
                'beginning'     =>   '&#xFECB;',
                'middle'        =>   '&#xFECC;',
                'end'           =>   '&#xFECA;',
                'isolated'      =>   '&#xFEC9;'
                ),
            'غ' => array(
                'beginning'     =>   '&#xFECF;',
                'middle'        =>   '&#xFED0;',
                'end'           =>   '&#xFECE;',
                'isolated'      =>   '&#xFECD;'
                ),
            'ف' => array(
                'beginning'     =>   '&#xFED3;',
                'middle'        =>   '&#xFED4;',
                'end'           =>   '&#xFED2;',
                'isolated'      =>   '&#xFED1;'
                ),
            'ق' => array(
                'beginning'     =>   '&#xFED7;',
                'middle'        =>   '&#xFED8;',
                'end'           =>   '&#xFED6;',
                'isolated'      =>   '&#xFED5;'
                ),
            'ك' => array(
                'beginning'     =>   '&#xFEDB;',
                'middle'        =>   '&#xFEDC;',
                'end'           =>   '&#xFEDA;',
                'isolated'      =>   '&#xFED9;'
                ),
            'ل' => array(
                'beginning'     =>   '&#xFEDF;',
                'middle'        =>   '&#xFEE0;',
                'end'           =>   '&#xFEDE;',
                'isolated'      =>   '&#xFEDD;'
                ),
            'م' => array(
                'beginning'     =>   '&#xFEE3;',
                'middle'        =>   '&#xFEE4;',
                'end'           =>   '&#xFEE2;',
                'isolated'      =>   '&#xFEE1;'
                ),
            'ن' => array(
                'beginning'     =>   '&#xFEE7;',
                'middle'        =>   '&#xFEE8;',
                'end'           =>   '&#xFEE6;',
                'isolated'      =>   '&#xFEE5;'
                ),
            'ه' => array(
                'beginning'     =>   '&#xFEEB;',
                'middle'        =>   '&#xFEEC;',
                'end'           =>   '&#xFEEA;',
                'isolated'      =>   '&#xFEE9;'
                ),
            'و' => array(
                'middle'        =>   '&#xFEEE;',
                'isolated'      =>   '&#xFEED;'
                ),
            'ي' => array(
                'beginning'     =>   '&#xFEF3;',
                'middle'        =>   '&#xFEF4;',
                'end'           =>   '&#xFEF2;',
                'isolated'      =>   '&#xFEF1;'
                ),
            'ئ' => array(
                'beginning'     =>   '&#xFE8B;',
                'middle'        =>   '&#xFE8C;',
                'end'           =>   '&#xFE8A;',
                'isolated'      =>   '&#xFE89;'
                ),
            'ة' => array(
                'middle'        =>   '&#xFE94;',
                'isolated'      =>   '&#xFE93;'
                )
        );

    if(in_array($word[0].$word[1], $isolated_chars))
    {
        $new_word[] = $all_chars[$word[0].$word[1]]['isolated'];
        $char_type[] = 'not_normal';
        $al_char[] = false;
    }
    else
    {
        if(in_array($word[0].$word[1], $lam) AND in_array($word[2].$word[3], $alef))
        {
            $new_word[] = $all_chars [$word[2].$word[3]]['la_beg'];
            $char_type[] = 'not_normal';

            $al_char[] = true;
        }
        else
        {

            $new_word[] = $all_chars[$word[0].$word[1]]['beginning'];
            $char_type[] = 'normal';
            $al_char[] = false;
        }

    }

    if(strlen($word) > 4)
    {
        if($char_type[0] == 'not_normal')

        {
            if(in_array($word[2].$word[3], $isolated_chars))
            {
                if($al_char[count($al_char)-1] == false)
                {
                    $new_word[] = $all_chars[$word[2].$word[3]]['isolated'];
                    $char_type[] = 'not_normal';

                }
                $al_char[] = false;

            }
            else
            {
                if(in_array($word[2].$word[3], $lam) AND in_array($word[4].$word[5], $alef))
                {
                    $new_word[] = $all_chars[$word[4].$word[5]]['la_beg'];
                    $char_type[] = 'not_normal';
                    $al_char[] = true;
                }
                else
                {
                    $new_word[] = $all_chars[$word[2].$word[3]]['beginning'];
                    $char_type[] = 'normal';
                    $al_char[] = false;
                }

            }
        }
        else
        {
            if(in_array($word[2].$word[3], $lam) AND in_array($word[4].$word[5], $alef))
            {

                $new_word[] = $all_chars[$word[4].$word[5]]['la_end'];
                $char_type[] = 'not_normal';
                $al_char[] = true;
            }
            else
            {
                $new_word[] = $all_chars[$word[2].$word[3]]['middle'];
                if(in_array($word[2].$word[3], $isolated_chars))
                {
                    $char_type[] = 'not_normal';
                    $al_char[] = false;
                }
                else
                {
                    $char_type[] = 'normal';
                    $al_char[] = false;
                }
            }

        }
        $x = 4;
    }
    else
    {
        $x = 2; 
    }

    for($x=4;$x< (strlen($word)-4) ;$x++)
    {
        if($char_type[count($char_type)-1] == 'not_normal' AND $x %2 == 0)
        {
            if(in_array($word[$x].$word[$x+1], $isolated_chars))
            {
                if($al_char[count($al_char)-1] == false)
                {
                    $new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
                    $char_type[] = 'not_normal';

                }
                $al_char[] = false;
            }
            elseif(in_array($word[$x].$word[$x+1], $lam) AND in_array($word[$x+2].$word[$x+3], $alef))
            {

                $new_word[] = $all_chars[$word[$x+2].$word[$x+3]]['la_beg'];
                $char_type[] = 'not_normal';
                $al_char[] = true;
            }
            else
            {

                $new_word[] = $all_chars[$word[$x].$word[$x+1]]['beginning'];
                $char_type[] = 'normal';
                $al_char[] = false;
            }
        }
        elseif($char_type[count($char_type)-1] == 'normal' AND $x %2 == 0)
        {

            if(in_array($word[$x].$word[$x+1], $isolated_chars))
            {
                if($al_char[count($al_char)-1] == false)
                {
                    $new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
                    $char_type[] = 'not_normal';
                }
                $al_char[] = false;
            }
            elseif(in_array($word[$x].$word[$x+1], $lam) AND in_array($word[$x+2].$word[$x+3], $alef))
            {

                $new_word[] = $all_chars[$word[$x+2].$word[$x+3]]['la_end'];
                $char_type[] = 'not_normal';
                $al_char[] = true;
            }
            else
            {

                $new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
                $char_type[] = 'normal';
                $al_char[] = false;
            }
        }

    }
    if(strlen($word)>6)
    {
        if($char_type[count($char_type)-1] == 'not_normal')
        {
            if(in_array($word[$x].$word[$x+1], $isolated_chars))
            {
                if($al_char[count($al_char)-1] == false)
                {
                    $new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
                    $char_type[] = 'not_normal';
                }
                $al_char[] = false;
            }
            else
            {

                if($word[strlen($word)-2].$word[strlen($word)-1] == 'ء')
                {
                    if($al_char[count($al_char)-1] == true)
                    {
                        $new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
                        $char_type[] = 'normal';
                    }
                    $al_char[] = false;
                }
                elseif(in_array($word[$x].$word[$x+1], $lam) AND in_array($word[$x+2].$word[$x+3], $alef))
                {

                    $new_word[] = $all_chars[$word[$x+2].$word[$x+3]]['la_end'];
                    $char_type[] = 'not_normal';
                    $al_char[] = true;
                }
                else
                {
                    $new_word[] = $all_chars[$word[$x].$word[$x+1]]['beginning'];
                    $char_type[] = 'normal';
                    $al_char[] = false;
                }

            }

            $x += 2;
        }
        elseif($char_type[count($char_type)-1] == 'normal' AND $al_char[count($al_char)-1] == false)
        {

            if(in_array($word[$x].$word[$x+1], $isolated_chars))
            {
                if($al_char[count($al_char)-1] == false)
                {
                    $new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
                    $char_type[] = 'not_normal';
                }
                $al_char[] = false;
            }
            elseif(in_array($word[$x].$word[$x+1], $lam) AND in_array($word[$x+2].$word[$x+3], $alef))
            {

                $new_word[] = $all_chars[$word[$x+2].$word[$x+3]]['la_end'];
                $char_type[] = 'not_normal';
                $al_char[] = true;
            }
            else
            {

                $new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
                $char_type[] = 'normal';
                $al_char[] = false;
            }

            $x += 2;
        }


    }

    if($char_type[count($char_type)-1] == 'not_normal')
    {

        if(in_array($word[$x].$word[$x+1], $isolated_chars))
        {       
            if($al_char[count($al_char)-1] == false)
            {
                $new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
            }

        }
        else
        {
            $new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];

        }

    }
    else
    {
        if(in_array($word[$x].$word[$x+1], $isolated_chars))
        {

            $new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];

        }
        else
        {

            $new_word[] = $all_chars[$word[$x].$word[$x+1]]['end'];

        }
    }

    return implode('',array_reverse($new_word));
}

阿拉伯语有一个大问题 问题不仅在于阅读字母,而且阿拉伯语包含几种形式的字母,单词的开头、中间和结尾 例子: ب ، ـبـ ، ـب ، ـب 要解决这个问题,可以使用unicode 使用此函数修复所有问题

注:此函数由以下人员创建:Abd AL-Latif 请参见github上的-> 职能:

$word = 'لا اله الا الله محمد رسول الله , اللهم لا علم لي الا ما علمتني انك انت العليم الحكيم';
fixArabicCharactersAndCreateProbablyString($word)

请参阅:希望这能回答问题您可能正在正确阅读它们,但除非您使用适合显示环境的编码输出,否则您将得到“损坏”文本。e、 g.将utf-8文本输出到iso8859/拉丁语-1术语我该怎么办?我的表格中有一些阿拉伯文/中文字符我不想在web上显示我需要它们在数组中正确显示,我需要做一些处理并将其导出到excel文件我已设置了标题('Content Type:text/html;charset=utf-8');在标题中,但仍然是相同的问题如果您对代码有任何问题,可以问我,
function fixArabicCharactersAndCreateProbablyString($word)
{

    $new_word = array();
    $char_type = array();
    $isolated_chars = array('ا', 'د', 'ذ', 'أ', 'آ', 'ر', 'ؤ', 'ء', 'ز', 'و', 'ى', 'ة', 'إ');
    $alef = array('أ','ا','إ','آ');
    $lam = array('ل');
    $al_char = array();
    $all_chars = array
        (
            'ا' => array(
                'la_beg'        =>   '&#xFEFB;',
                'la_end'        =>   '&#xFEFC;',
                'middle'        =>   '&#xFE8E;',

                'isolated'      =>   '&#xFE8D;'
                ),
            'إ' => array(
                'la_beg'        =>   '&#xFEF9;',
                'la_end'        =>   '&#xFEFA;',
                'middle'        =>   '&#xFE88;',

                'isolated'      =>   '&#xFE87;'
                ),

            'ؤ' => array(

                'middle'        =>   '&#xFE85;',

                'isolated'      =>   '&#xFE86;'
                ),
            'ء' => array(
                'middle'        =>   '&#xFE80;',
                'isolated'      =>   '&#xFE80;'
                ),
            'أ' => array(
                'la_beg'        =>   '&#xFEF7;',
                'la_end'        =>   '&#xFEF8;',
                'middle'        =>   '&#xFE84;',

                'isolated'      =>   '&#xFE83;'
                ),
            'آ' => array(
                'la_beg'        =>   '&#xFEF5;',
                'la_end'        =>   '&#xFEF6;',
                'middle'        =>   '&#xFE82;',

                'isolated'      =>   '&#xFE81;'
                ),
            'ى' => array(

                'middle'        =>   '&#xFEF0;',

                'isolated'      =>   '&#xFEEF;'
                ),
            'ب' => array(
                'beginning'     =>   '&#xFE91;',
                'middle'        =>   '&#xFE92;',
                'end'           =>   '&#xFE90;',
                'isolated'      =>   '&#xFE8F;'
                ),
            'ت' => array(
                'beginning'     =>   '&#xFE97;',
                'middle'        =>   '&#xFE98;',
                'end'           =>   '&#xFE96;',
                'isolated'      =>   '&#xFE95;'
                ),
            'ث' => array(
                'beginning'     =>   '&#xFE9B;',
                'middle'        =>   '&#xFE9C;',
                'end'           =>   '&#xFE9A;',
                'isolated'      =>   '&#xFE99;'
                ),
            'ج' => array(
                'beginning'     =>   '&#xFE9F;',
                'middle'        =>   '&#xFEA0;',
                'end'           =>   '&#xFE9E;',
                'isolated'      =>   '&#xFE9D;'
                ),
            'ح' => array(
                'beginning'     =>   '&#xFEA3;',
                'middle'        =>   '&#xFEA4;',
                'end'           =>   '&#xFEA2;',
                'isolated'      =>   '&#xFEA1;'
                ),
            'خ' => array(
                'beginning'     =>   '&#xFEA7;',
                'middle'        =>   '&#xFEA8;',
                'end'           =>   '&#xFEA6;',
                'isolated'      =>   '&#xFEA5;'
                ),
            'د' => array(
                'middle'        =>   '&#xFEAA;',
                'isolated'      =>   '&#xFEA9;'
                ),
            'ذ' => array(
                'middle'        =>   '&#xFEAC;',
                'isolated'      =>   '&#xFEAB;'
                ),
            'ر' => array(
                'middle'        =>   '&#xFEAE;',
                'isolated'      =>   '&#xFEAD;'
                ),
            'ز' => array(
                'middle'        =>   '&#xFEB0;',
                'isolated'      =>   '&#xFEAF;'
                ),
            'س' => array(
                'beginning'     =>   '&#xFEB3;',
                'middle'        =>   '&#xFEB4;',
                'end'           =>   '&#xFEB2;',
                'isolated'      =>   '&#xFEB1;'
                ),
            'ش' => array(
                'beginning'     =>   '&#xFEB7;',
                'middle'        =>   '&#xFEB8;',
                'end'           =>   '&#xFEB6;',
                'isolated'      =>   '&#xFEB5;'
                ),
            'ص' => array(
                'beginning'     =>   '&#xFEBB;',
                'middle'        =>   '&#xFEBC;',
                'end'           =>   '&#xFEBA;',
                'isolated'      =>   '&#xFEB9;'
                ),
            'ض' => array(
                'beginning'     =>   '&#xFEBF;',
                'middle'        =>   '&#xFEC0;',
                'end'           =>   '&#xFEBE;',
                'isolated'      =>   '&#xFEBD;'
                ),
            'ط' => array(
                'beginning'     =>   '&#xFEC3;',
                'middle'        =>   '&#xFEC4;',
                'end'           =>   '&#xFEC2;',
                'isolated'      =>   '&#xFEC1;'
                ),
            'ظ' => array(
                'beginning'     =>   '&#xFEC7;',
                'middle'        =>   '&#xFEC8;',
                'end'           =>   '&#xFEC6;',
                'isolated'      =>   '&#xFEC5;'
                ),
            'ع' => array(
                'beginning'     =>   '&#xFECB;',
                'middle'        =>   '&#xFECC;',
                'end'           =>   '&#xFECA;',
                'isolated'      =>   '&#xFEC9;'
                ),
            'غ' => array(
                'beginning'     =>   '&#xFECF;',
                'middle'        =>   '&#xFED0;',
                'end'           =>   '&#xFECE;',
                'isolated'      =>   '&#xFECD;'
                ),
            'ف' => array(
                'beginning'     =>   '&#xFED3;',
                'middle'        =>   '&#xFED4;',
                'end'           =>   '&#xFED2;',
                'isolated'      =>   '&#xFED1;'
                ),
            'ق' => array(
                'beginning'     =>   '&#xFED7;',
                'middle'        =>   '&#xFED8;',
                'end'           =>   '&#xFED6;',
                'isolated'      =>   '&#xFED5;'
                ),
            'ك' => array(
                'beginning'     =>   '&#xFEDB;',
                'middle'        =>   '&#xFEDC;',
                'end'           =>   '&#xFEDA;',
                'isolated'      =>   '&#xFED9;'
                ),
            'ل' => array(
                'beginning'     =>   '&#xFEDF;',
                'middle'        =>   '&#xFEE0;',
                'end'           =>   '&#xFEDE;',
                'isolated'      =>   '&#xFEDD;'
                ),
            'م' => array(
                'beginning'     =>   '&#xFEE3;',
                'middle'        =>   '&#xFEE4;',
                'end'           =>   '&#xFEE2;',
                'isolated'      =>   '&#xFEE1;'
                ),
            'ن' => array(
                'beginning'     =>   '&#xFEE7;',
                'middle'        =>   '&#xFEE8;',
                'end'           =>   '&#xFEE6;',
                'isolated'      =>   '&#xFEE5;'
                ),
            'ه' => array(
                'beginning'     =>   '&#xFEEB;',
                'middle'        =>   '&#xFEEC;',
                'end'           =>   '&#xFEEA;',
                'isolated'      =>   '&#xFEE9;'
                ),
            'و' => array(
                'middle'        =>   '&#xFEEE;',
                'isolated'      =>   '&#xFEED;'
                ),
            'ي' => array(
                'beginning'     =>   '&#xFEF3;',
                'middle'        =>   '&#xFEF4;',
                'end'           =>   '&#xFEF2;',
                'isolated'      =>   '&#xFEF1;'
                ),
            'ئ' => array(
                'beginning'     =>   '&#xFE8B;',
                'middle'        =>   '&#xFE8C;',
                'end'           =>   '&#xFE8A;',
                'isolated'      =>   '&#xFE89;'
                ),
            'ة' => array(
                'middle'        =>   '&#xFE94;',
                'isolated'      =>   '&#xFE93;'
                )
        );

    if(in_array($word[0].$word[1], $isolated_chars))
    {
        $new_word[] = $all_chars[$word[0].$word[1]]['isolated'];
        $char_type[] = 'not_normal';
        $al_char[] = false;
    }
    else
    {
        if(in_array($word[0].$word[1], $lam) AND in_array($word[2].$word[3], $alef))
        {
            $new_word[] = $all_chars [$word[2].$word[3]]['la_beg'];
            $char_type[] = 'not_normal';

            $al_char[] = true;
        }
        else
        {

            $new_word[] = $all_chars[$word[0].$word[1]]['beginning'];
            $char_type[] = 'normal';
            $al_char[] = false;
        }

    }

    if(strlen($word) > 4)
    {
        if($char_type[0] == 'not_normal')

        {
            if(in_array($word[2].$word[3], $isolated_chars))
            {
                if($al_char[count($al_char)-1] == false)
                {
                    $new_word[] = $all_chars[$word[2].$word[3]]['isolated'];
                    $char_type[] = 'not_normal';

                }
                $al_char[] = false;

            }
            else
            {
                if(in_array($word[2].$word[3], $lam) AND in_array($word[4].$word[5], $alef))
                {
                    $new_word[] = $all_chars[$word[4].$word[5]]['la_beg'];
                    $char_type[] = 'not_normal';
                    $al_char[] = true;
                }
                else
                {
                    $new_word[] = $all_chars[$word[2].$word[3]]['beginning'];
                    $char_type[] = 'normal';
                    $al_char[] = false;
                }

            }
        }
        else
        {
            if(in_array($word[2].$word[3], $lam) AND in_array($word[4].$word[5], $alef))
            {

                $new_word[] = $all_chars[$word[4].$word[5]]['la_end'];
                $char_type[] = 'not_normal';
                $al_char[] = true;
            }
            else
            {
                $new_word[] = $all_chars[$word[2].$word[3]]['middle'];
                if(in_array($word[2].$word[3], $isolated_chars))
                {
                    $char_type[] = 'not_normal';
                    $al_char[] = false;
                }
                else
                {
                    $char_type[] = 'normal';
                    $al_char[] = false;
                }
            }

        }
        $x = 4;
    }
    else
    {
        $x = 2; 
    }

    for($x=4;$x< (strlen($word)-4) ;$x++)
    {
        if($char_type[count($char_type)-1] == 'not_normal' AND $x %2 == 0)
        {
            if(in_array($word[$x].$word[$x+1], $isolated_chars))
            {
                if($al_char[count($al_char)-1] == false)
                {
                    $new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
                    $char_type[] = 'not_normal';

                }
                $al_char[] = false;
            }
            elseif(in_array($word[$x].$word[$x+1], $lam) AND in_array($word[$x+2].$word[$x+3], $alef))
            {

                $new_word[] = $all_chars[$word[$x+2].$word[$x+3]]['la_beg'];
                $char_type[] = 'not_normal';
                $al_char[] = true;
            }
            else
            {

                $new_word[] = $all_chars[$word[$x].$word[$x+1]]['beginning'];
                $char_type[] = 'normal';
                $al_char[] = false;
            }
        }
        elseif($char_type[count($char_type)-1] == 'normal' AND $x %2 == 0)
        {

            if(in_array($word[$x].$word[$x+1], $isolated_chars))
            {
                if($al_char[count($al_char)-1] == false)
                {
                    $new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
                    $char_type[] = 'not_normal';
                }
                $al_char[] = false;
            }
            elseif(in_array($word[$x].$word[$x+1], $lam) AND in_array($word[$x+2].$word[$x+3], $alef))
            {

                $new_word[] = $all_chars[$word[$x+2].$word[$x+3]]['la_end'];
                $char_type[] = 'not_normal';
                $al_char[] = true;
            }
            else
            {

                $new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
                $char_type[] = 'normal';
                $al_char[] = false;
            }
        }

    }
    if(strlen($word)>6)
    {
        if($char_type[count($char_type)-1] == 'not_normal')
        {
            if(in_array($word[$x].$word[$x+1], $isolated_chars))
            {
                if($al_char[count($al_char)-1] == false)
                {
                    $new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
                    $char_type[] = 'not_normal';
                }
                $al_char[] = false;
            }
            else
            {

                if($word[strlen($word)-2].$word[strlen($word)-1] == 'ء')
                {
                    if($al_char[count($al_char)-1] == true)
                    {
                        $new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
                        $char_type[] = 'normal';
                    }
                    $al_char[] = false;
                }
                elseif(in_array($word[$x].$word[$x+1], $lam) AND in_array($word[$x+2].$word[$x+3], $alef))
                {

                    $new_word[] = $all_chars[$word[$x+2].$word[$x+3]]['la_end'];
                    $char_type[] = 'not_normal';
                    $al_char[] = true;
                }
                else
                {
                    $new_word[] = $all_chars[$word[$x].$word[$x+1]]['beginning'];
                    $char_type[] = 'normal';
                    $al_char[] = false;
                }

            }

            $x += 2;
        }
        elseif($char_type[count($char_type)-1] == 'normal' AND $al_char[count($al_char)-1] == false)
        {

            if(in_array($word[$x].$word[$x+1], $isolated_chars))
            {
                if($al_char[count($al_char)-1] == false)
                {
                    $new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
                    $char_type[] = 'not_normal';
                }
                $al_char[] = false;
            }
            elseif(in_array($word[$x].$word[$x+1], $lam) AND in_array($word[$x+2].$word[$x+3], $alef))
            {

                $new_word[] = $all_chars[$word[$x+2].$word[$x+3]]['la_end'];
                $char_type[] = 'not_normal';
                $al_char[] = true;
            }
            else
            {

                $new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];
                $char_type[] = 'normal';
                $al_char[] = false;
            }

            $x += 2;
        }


    }

    if($char_type[count($char_type)-1] == 'not_normal')
    {

        if(in_array($word[$x].$word[$x+1], $isolated_chars))
        {       
            if($al_char[count($al_char)-1] == false)
            {
                $new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];
            }

        }
        else
        {
            $new_word[] = $all_chars[$word[$x].$word[$x+1]]['isolated'];

        }

    }
    else
    {
        if(in_array($word[$x].$word[$x+1], $isolated_chars))
        {

            $new_word[] = $all_chars[$word[$x].$word[$x+1]]['middle'];

        }
        else
        {

            $new_word[] = $all_chars[$word[$x].$word[$x+1]]['end'];

        }
    }

    return implode('',array_reverse($new_word));
}
$word = 'لا اله الا الله محمد رسول الله , اللهم لا علم لي الا ما علمتني انك انت العليم الحكيم';
fixArabicCharactersAndCreateProbablyString($word)