Re: strrev() for persian language!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



shahrzad khorrami wrote:
hi all,

for reversing of characters, strrev() is good. but for persian characters
it doesn't work!

Thanks

How nice of you to let us know! Now, is there a question in here somewhere? or is that all you wanted to say?

--
_assuming_ you want to know why this is:
Persian characters are represented using > 1 byte per character. strrev() assumes exactly 1 byte per character, and just reverses the "string" of bytes. Which results in a reversed string. (some) Persian characters are represented using 2 (or more?) bytes; just reversing those will lead to an entirely different chracter (or comination thereof).
_assuming_ you want to know how to get around this:
Use a function which handles these cases properly. One that is encoding-aware (and doesn't just assume a 1-byte charset). You can either use a combination of iconv_* functions to do this, or use a combination of mb_* functions.
Something like this should work:
function iconv_strrev($string, $encoding) {
   $return = '';
   $len = iconv_strlen($string, $encoding);
   for($i=($len-1);$i >= 0;$i--) {
      $return .= iconv_substr($string, $i, 1, $encoding);
   }
   return $return;
}



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux