Search code examples
phputf-8reverseunicode-string

StrRev() Dosent Support UTF-8


I'm trying to make a code that replace Arabic text to be supported in non Arabic supported programs
in that i will be need to reverse the text after replace but its shows some garbage stuff instead of the wanted result

Here Is The Code :

<?php
$string = "اهلا بك";
echo "$string <br>";
$Reversed = strrev($string);
echo "<br><b>After Reverse</b><br><br>";
echo "<br> $Reversed";
?>

Result :

اهلا بك

After Reverse


�٨� �؄ه٧

I need it to be the way it is but reversed ? not GARBAGE !!


Solution

  • in order to make that strrev() support UTF-8 you need to use this Function

    function utf8_strrev($str){
        preg_match_all('/./us', $str, $ar);
        return join('', array_reverse($ar[0]));
    }
    

    so we going to chage strrev() in our code to utf8_strev() :

    $string = "اهلا بك";
    echo "$string <br>";
    $Reversed = utf8_strrev($string); // here we have changed it
    echo "<br><b>After Reverse</b><br><br>";
    echo "<br> $Reversed";
    

    and the Result is :

    اهلا بك
    
    After Reverse
    
    
    كب الها