PHP 8.1.0 Beta 1 available for testing

mb_decode_numericentity

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_decode_numericentityHTML sayısal karakter gösterimini karaktere dönüştürür

Açıklama

mb_decode_numericentity(
    string $dizge,
    array $bölge,
    string|null $kodlama = null,
    bool $onaltılık = false
): string

Belirtilen dizge dizgesindeki karakter kodlarından belirtilen bölge içinde kalan karakterlerin yerine HTML sayısal karakter gösterimlerini yerleştirir.

Değiştirgeler

dizge

HTML karakter kodlaması kaldırılacak dizge.

bölge

Dönüşüm yapılacak kod bölgesini içeren dizi.

kodlama

kodlama değiştirgesinde karakter kodlaması belirtilir. Belirtilmediği takdirde veya null ise dahili karakter kodlaması kullanılır.

onaltılık

true ise sayısal gösterim onaltılık olur, değilse onluk olur.

Dönen Değerler

Dönüştürülen dizge.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0kodlama artık null olabiliyor.

Örnekler

Örnek 1 - bölge örneği

<?php
$bölge 
= array (
 
int kodlama_başı1int kodlama_sonu1int göreli_konum1int maske1,
 
int kodlama_başı2int kodlama_sonu2int göreli_konum2int maske2,
 ........
 
int kodlama_başıNint kodlama_sonuNint göreli_konumNint maskeN );
// kodlama_başıN ve int kodlama_sonuN için Evrenkodlu değer belirt,
// değere göreli_konumN ekleyip sonucu maskeN ile bitsel VE'le ve
// değeri sayısal gösterim dizgesine dönüştür.
?>

Örnek 2 - JavaScript dizgeyi önceleyen map örneği

<?php
function escape_javascript_string($str) {
  
$map = [
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,0,0// 49
          
0,0,0,0,0,0,0,0,1,1,
          
1,1,1,1,1,0,0,0,0,0,
          
0,0,0,0,0,0,0,0,0,0,
          
0,0,0,0,0,0,0,0,0,0,
          
0,1,1,1,1,1,1,0,0,0// 99
          
0,0,0,0,0,0,0,0,0,0,
          
0,0,0,0,0,0,0,0,0,0,
          
0,0,0,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1// 149
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1// 199
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1,
          
1,1,1,1,1,1,1,1,1,1// 249
          
1,1,1,1,1,1,1// 255
          
];
  
// Kodlama: UTF-8
  
$mblen mb_strlen($str'UTF-8');
  
$utf32 bin2hex(mb_convert_encoding($str'UTF-32''UTF-8'));
  for (
$i=0$encoded=''$i $mblen$i++) {
      
$u substr($utf32$i*88);
      
$v base_convert($u1610);
      if (
$v 256 && $map[$v]) {
        
$encoded .= '\\x'.substr($u6,2);
      } else if (
$v == 2028) {
        
$encoded .= '\\u2028';
      } else if (
$v == 2029) {
        
$encoded .= '\\u2029';
      } else {
        
$encoded .= mb_convert_encoding(hex2bin($u), 'UTF-8''UTF-32');
      }
   }
   return 
$encoded;
}

// Veriyi sına
$convmap = [ 0x00xffff00xffff ];
$msg '';
for (
$i=0$i 1000$i++) {
  
// chr() 128'den büyük değerler için doğru UTF-8 veri üretmez,
  // yerine mb_decode_numericentity() kullanılır.
  
$msg .= mb_decode_numericentity('&#'.$i.';'$convmap'UTF-8');
}

// var_dump($msg);
var_dump(escape_javascript_string($msg));

Ayrıca Bakınız

add a note add a note

User Contributed Notes 3 notes

up
1
dev at glossword info
17 years ago
Just two great functions for daily use:

/* Converts any HTML-entities into characters */
function my_numeric2character($t)
{
    $convmap = array(0x0, 0x2FFFF, 0, 0xFFFF);
    return mb_decode_numericentity($t, $convmap, 'UTF-8');
}
/* Converts any characters into HTML-entities */
function my_character2numeric($t)
{
    $convmap = array(0x0, 0x2FFFF, 0, 0xFFFF);
    return mb_encode_numericentity($t, $convmap, 'UTF-8');
}
print my_numeric2character('&#8217; &#7936; &#226;');
print my_character2numeric(' ');
up
0
donovan at conduit it
15 years ago
note that at this time it seems that mb_decode_numericentity() only works with decimal entities and not hexadecimal entities.  This fact would have saved me a good hour of time in debugging.

For those who need to convert hex entities try first converting them all to decimal entities with a combination of the preg_replace() and hexdec() functions.
up
-1
fernandosilveira at yahoo dot com dot br
1 year ago
Be careful!
In addition to translate numeric entities to chars on specified target encoding, this function encodes every character from input string to the specified target encodin, even if the characters are outside the range defined by the conversion map.
To Top