تبدیل انکدینگ

D.A.V.O.O.D

Member
سلام ، تابعی برای تبدیل مثلا : ( داود ) به
کد:
&# 1583; &# 1575; &# 1608; &# 1583;
سراغ دارید ؟

پیشا پیش ممنون
 

Mohammadreza

Well-Known Member
خوب مگه شما نمي خوايد انكودينگ رو عوض كنيد ؟
اينم همه مثال هاش همينه ديگه ،
اين عكس رو ببين بهتر متوجه ميشي !
help_iconv.PNG

سه تا پارامتر داره ،
اولي (string in_charset) انكودينگ تكست كه بهش مي خواي بدي رو بايد بنويسي مثلا UTF-8
دومي (string out_charset) انكودينگي كه مي خوا خروجي داشته باشه ،
سومي هم تكستي كه مي خواي انكودينگش تغيير كنه !
 

D.A.V.O.O.D

Member
چند تا انگدینگ داریم ؟ همه را زدم نشد ! :((

با این تابع انجام نمیشه ، فکر کنم با توابعی مثل htmlentities باید این کاری که می خوام انجام بشه ، اما نمی دونم چجوری ، کسی دیگه نمی تونه کمک کنه ؟
 

P.H.P

Member
سلام

به وسیله تابع ord میتونی این کار رو انجام بدی

PHP:
<?php

    $name = "داود";


    $convert = "";


    for($i = 0; $i < strlen($name); $i++)
        $convert .= "&#" . ord($name[$i]) . ";";


    
echo $convert;

?>
موفق
 
آخرین ویرایش:

D.A.V.O.O.D

Member
مرسی ، اما این تابع که شما دادی ، خروجیش به شکل زیره :
کد:
&# 216;&# 175;&# 216;&# 167;Ù&# 136;&# 216;&# 175;

من می خوام به صورت زیر بشه :

کد:
&# 1583;&# 1575;&# 1608;&# 1583;

فرقشون توی اینه که اگه کد دومی را توی یک صفحه html با انکدینگ دلخواه بگذاری نشون می ده ، اما اولی را خیر .
 

P.H.P

Member
PHP:
<?php

$name = "داود";
function UTF_to_Unicode($input, $array=False) {

 $bit1  = pow(64, 0);
 $bit2  = pow(64, 1);
 $bit3  = pow(64, 2);
 $bit4  = pow(64, 3);
 $bit5  = pow(64, 4);
 $bit6  = pow(64, 5);
 
 $value = '';
 $val   = array();
 
 for($i=0; $i< strlen( $input ); $i++){
 
     $ints = ord ( $input[$i] );
    
     $z     = ord ( $input[$i] );
     $y     = ord ( $input[$i+1] ) - 128;
     $x     = ord ( $input[$i+2] ) - 128;
     $w     = ord ( $input[$i+3] ) - 128;
     $v     = ord ( $input[$i+4] ) - 128;
     $u     = ord ( $input[$i+5] ) - 128;

     if( $ints >= 0 && $ints <= 127 ){
        // 1 bit
        $value .= '&#'.($z * $bit1).';';
        $val[]  = $value;
     }
     if( $ints >= 192 && $ints <= 223 ){
        // 2 bit
        $value .= '&#'.(($z-192) * $bit2 + $y * $bit1).';';
        $val[]  = $value;
     }   
     if( $ints >= 224 && $ints <= 239 ){
        // 3 bit
        $value .= '&#'.(($z-224) * $bit3 + $y * $bit2 + $x * $bit1).';';
        $val[]  = $value;
     }    
     if( $ints >= 240 && $ints <= 247 ){
        // 4 bit
        $value .= '&#'.(($z-240) * $bit4 + $y * $bit3 +
$x * $bit2 + $w * $bit1).';';
        $val[]  = $value;       
     }    
     if( $ints >= 248 && $ints <= 251 ){
        // 5 bit
        $value .= '&#'.(($z-248) * $bit5 + $y * $bit4
+ $x * $bit3 + $w * $bit2 + $v * $bit1).';';
        $val[]  = $value;  
     }
     if( $ints == 252 && $ints == 253 ){
        // 6 bit
        $value .= '&#'.(($z-252) * $bit6 + $y * $bit5
+ $x * $bit4 + $w * $bit3 + $v * $bit2 + $u * $bit1).';';
        $val[]  = $value;
     }
     if( $ints == 254 || $ints == 255 ){
       echo 'Wrong Result!<br>';
     }
    
 }
 
 if( $array === False ){
    return $unicode = $value;
 }
 if($array === True ){
     $val     = str_replace('&#', '', $value);
     $val     = explode(';', $val);
     $len = count($val);
     unset($val[$len-1]);
    
     return $unicode = $val;
 }
 
}

echo UTF_to_Unicode($name);

?>

موفق
 

جدیدترین ارسال ها

بالا