Hướng dẫn dùng decimal ascii trong PHP

❮ PHP String Reference

Nội dung chính

  • Definition and Usage
  • Parameter Values
  • Technical Details
  • Definition and Usage
  • Parameter Values
  • Technical Details
  • More Examples
  • PHP – Get ASCII Value of a Character
  • Description
  • Return Values
  • Is CHR () and Ord () is opposite function in PHP?
  • What is the return of Ord () function in PHP?
  • What is ASCII value of A to Z?
  • What is the CHR function?

Example

Return the ASCII value of "h":

echo ord("h")."
";
echo ord("hello")."
";
?>

Try it Yourself »


Definition and Usage

The ord() function returns the ASCII value of the first character of a string.


Syntax

Parameter Values

ParameterDescription
string Required. The string to get an ASCII value from

Technical Details

Return Value:Returns the ASCII value as an integer
PHP Version:4+

❮ PHP String Reference

❮ PHP String Reference

Example

Return characters from different ASCII values:

echo chr(52) . "
"; // Decimal value
echo chr(052) . "
"; // Octal value
echo chr(0x52) . "
"; // Hex value
?>

Try it Yourself »


Definition and Usage

The chr() function returns a character from the specified ASCII value.

The ASCII value can be specified in decimal, octal, or hex values. Octal values are defined by a leading 0, while hex values are defined by a leading 0x.


Syntax

Parameter Values

ParameterDescription
ascii Required. An ASCII value


Technical Details

Return Value:Returns the specified character
PHP Version:4+

More Examples

Example

Using the octal value 046 to add the ASCII Character: &.

$str = chr(046);
echo("You $str me forever!");
?>

Try it Yourself »

Example

Using the decimal values 43 and 61 to add the ASCII Characters: + and =.

$str = chr(43);
$str2 = chr(61);
echo("2 $str 2 $str2 4");
?>

Try it Yourself »


❮ PHP String Reference


PHP – Get ASCII Value of a Character

To get the ASCII value of a character in PHP, call ord() String function and pass the character (as string) as argument to the function.

ord() String function takes string as an argument and returns the first byte of the string as a value between 0 and 255.

Examples

Get ASCII Value of a Character

In the following example, we get the ASCII value of character m using ord() function.

PHP Program

Output

Hướng dẫn dùng decimal ascii trong PHP

Conclusion

In this PHP Tutorial, we learned how to convert array into a CSV string, using implode() function, with examples.

(PHP 4, PHP 5, PHP 7, PHP 8)

ordConvert the first byte of a string to a value between 0 and 255

Description

ord(string $character): int

If the string is in a single-byte encoding, such as ASCII, ISO-8859, or Windows 1252, this is equivalent to returning the position of a character in the character set's mapping table. However, note that this function is not aware of any string encoding, and in particular will never identify a Unicode code point in a multi-byte encoding such as UTF-8 or UTF-16.

This function complements chr().

Parameters

character

A character.

Return Values

An integer between 0 and 255.

Examples

Example #1 ord() example

$str "\n";
if (
ord($str) == 10) {
    echo 
"The first character of \$str is a line feed.\n";
}
?>

Example #2 Examining the individual bytes of a UTF-8 string

declare(encoding='UTF-8');
$str "🐘";
for ( 
$pos=0$pos strlen($str); $pos ++ ) {
 
$byte substr($str$pos);
 echo 
'Byte ' $pos ' of $str has value ' ord($byte) . PHP_EOL;
}
?>

The above example will output:

Byte 0 of $str has value 240
Byte 1 of $str has value 159
Byte 2 of $str has value 144
Byte 3 of $str has value 152

See Also

  • chr() - Generate a single-byte string from a number
  • An » ASCII-table
  • mb_ord() - Get Unicode code point of character
  • IntlChar::ord() - Return Unicode code point value of character

arglanir+phpnet at gmail dot com

10 years ago

As ord() doesn't work with utf-8, and if you do not have access to mb_* functions, the following function will work well:
function ordutf8($string, &$offset) {
   
$code = ord(substr($string, $offset,1));
    if (
$code >= 128) {        //otherwise 0xxxxxxx
       
if ($code < 224) $bytesnumber = 2;                //110xxxxx
       
else if ($code < 240) $bytesnumber = 3;        //1110xxxx
       
else if ($code < 248) $bytesnumber = 4;    //11110xxx
       
$codetemp = $code - 192 - ($bytesnumber > 2 ? 32 : 0) - ($bytesnumber > 3 ? 16 : 0);
        for (
$i = 2; $i <= $bytesnumber; $i++) {
           
$offset ++;
           
$code2 = ord(substr($string, $offset, 1)) - 128;        //10xxxxxx
           
$codetemp = $codetemp*64 + $code2;
        }
       
$code = $codetemp;
    }
   
$offset += 1;
    if (
$offset >= strlen($string)) $offset = -1;
    return
$code;
}
?>
$offset is a reference, as it is not easy to split a utf-8 char-by-char. Useful to iterate on a string:
$text = "abcàê߀abc";
$offset = 0;
while (
$offset >= 0) {
    echo
$offset.": ".ordutf8($text, $offset)."\n";
}
/* returns:
0: 97
1: 98
2: 99
3: 224
5: 234
7: 223
9: 8364
12: 97
13: 98
14: 99
*/
?>
Feel free to adapt my code to fit your needs.

rowan dot collins at cwtdigital dot com

9 years ago

Regarding character sets, and whether or not this is "ASCII". Firstly, there is no such thing as "8-bit ASCII", so if it were ASCII it would only ever return integers up to 127. 8-bit ASCII-compatible encodings include the ISO 8859 family of encodings, which map various common characters to the values from 128 to 255. UTF-8 is also designed so that characters representable in 7-bit ASCII are coded the same; byte values higher than 127 in a UTF-8 string represent the beginning of a multi-byte character.

In fact, like most of PHP's string functions, this function isn't doing anything to do with character encoding at all - it is just interpreting a binary byte from a string as an unsigned integer. That is, ord(chr(200)) will always return 200, but what character chr(200) *means* will vary depending on what character encoding it is *interpreted* as part of (e.g. during display).

A technically correct description would be "Returns an integer representation of the first byte of a string, from 0 to 255. For single-byte encodings such as (7-bit) ASCII and the ISO 8859 family, this will correspond to the first character, and will be the position of that character in the encoding's mapping table. For multi-byte encodings, such as UTF-8 or UTF-16, the byte may not represent a complete character."

The link to asciitable.com should also be replaced by one which explains what character encoding it is displaying, as "Extended ASCII" is an ambiguous and misleading name.

paco at olecode dot com

2 years ago

this function convert UTF-8 string to RTF code string. I am using code of v0rbiz at yahoo dot com, thanks!!!

function cadena_rtf($txt)
   {
      $result = null;

      for ($pos = 0; $pos < mb_strlen($txt); $pos++) {

         $char = mb_substr($txt, $pos, 1);

         if (!preg_match("/[A-Za-z1-9,.]/", $char)) {
            //unicode ord real!!!
            $k   = mb_convert_encoding($char, 'UCS-2LE', 'UTF-8');
            $k1  = ord(substr($k, 0, 1));
            $k2  = ord(substr($k, 1, 1));
            $ord = $k2 * 256 + $k1;

            if ($ord > 255) {
               $result .= '\uc1\u' . $ord . '*';
            } elseif ($ord > 32768) {
               $result .= '\uc1\u' . ($ord - 65535) . '*';
            } else {
               $result .= "\\'" . dechex($ord);
            }
         } else {
            $result .= $char;
         }
      }
      return $result;
   }

v0rbiz at yahoo dot com

18 years ago

I did not found a unicode/multibyte capable 'ord' function, so...

function uniord($u) {
   
$k = mb_convert_encoding($u, 'UCS-2LE', 'UTF-8');
   
$k1 = ord(substr($k, 0, 1));
   
$k2 = ord(substr($k, 1, 1));
    return
$k2 * 256 + $k1;
}
?>

Noname

8 months ago

declare (encoding='UTF-8');$animalsstr = '🐀🐁🐂🐃🐄🐅🐆🐇🐈🐉🐊🐋🐌🐍🐎🐏🐐🐑🐒🐓🐔🐕🐖🐗🐘🐙'
       
. '🐚🐛🐜🐝🐞🐟🐠🐡🐢🐣🐤🐥🐦🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐱🐲🐳🐴🐵'
       
. '🐶🐷🐸🐹🐺🐻🐼🐽🐾🐿';$animals = mb_str_split($animalsstr);
foreach (
$animals as $animal) {
    for (
$pos = 0; $pos < strlen($animal); $pos++) {
       
$byte = substr($animal, $pos);
        echo
"Byte $pos of $animal has value " . ord($byte) . PHP_EOL;
    }
}
?>

Anonymous

1 year ago

For anyone who's looking to convert full strings to map and back it's pretty simple but takes some getting used to...the code below saves an hour of scrounging codes for beginners like myself.

function var2map($a) {
    $b='';
    $c=strlen($a);
    for($i=0; $i<$c; ++$i) {
        $d=ord(substr($a,$i,1));
        if($d<10) {
            $e='00'.$d;
        } else {
            if($d<100) {
                $e='0'.$d;
            } else {
                $e=$d;
            }
        }
        if($b=='') {
            $b=$e;
        } else {
            $b=$b.$e;
        }
    }
    return $b;
}

function map2var($a) {
    $b='';
    $c=strlen($a) / 3;
    for($i=0; $i<$c; ++$i) {
        $d=chr(substr($a,$i*3,3));
        if($b=='') {
            $b=$d;
        } else {
            $b=$b.$d;
        }
    }
    return $b;
}

Is CHR () and Ord () is opposite function in PHP?

Description. The chr() function generates a character from the specified ASCII value. This function is the inverse of the ord() function which does the opposite of what this function does.

What is the return of Ord () function in PHP?

The ord() function returns the ASCII value of the first character of a string.

What is ASCII value of A to Z?

The ASCII value of the lowercase alphabet is from 97 to 122. And, the ASCII value of the uppercase alphabet is from 65 to 90. If the ASCII value of the character entered by the user lies in the range of 97 to 122 or from 65 to 90, that number is an alphabet.

What is the CHR function?

Chr ( charcode ) The required charcode argument is a Long that identifies a character. Remarks. Numbers from 0 – 31 are the same as standard, nonprintable ASCII codes. For example, Chr(10) returns a linefeed character.