StrRev() Dosent Support UTF-8

后端 未结 3 884
长情又很酷
长情又很酷 2021-02-15 18:50

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 s

相关标签:
3条回答
  • 2021-02-15 19:13

    A more generic solution that handles all encodings, not only UTF-8:

    function mb_strrev ($string, $encoding = null)
    {
        if ( is_null($encoding) ) {
            $encoding = mb_detect_encoding($string);
        }
    
        $length   = mb_strlen($string, $encoding);
        $reversed = '';
    
        while ( $length-->0 ) {
            $reversed .= mb_substr($string, $length, 1, $encoding);
        }
    
        return $reversed;
    }
    

    Thanks to Kevin van Zonneveld

    0 讨论(0)
  • 2021-02-15 19:15

    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
    
    
    كب الها
    
    0 讨论(0)
  • 2021-02-15 19:17

    I have been using this one

    taken from here http://php.net/manual/en/function.strrev.php#122953

    function mb_strrev($str){
        $r = '';
        for ($i = mb_strlen($str); $i >= 0; $i--) {
            $r .= mb_substr($str, $i, 1);
        }
    
        return $r;
    }
    
    0 讨论(0)
提交回复
热议问题