ответ

1

Вы можете использовать json_encode, чтобы сделать это ...

$str = "è"; 
$str = json_encode($str); 
print $str; 

отпечатывается \ u00e8. Вы можете str_replace, чтобы удалить \ u, если хотите. Вы можете использовать strtoupper, если хотите E вместо e.

+0

Я пробовал это, но это не будет работать для ASCII символов, я в основном ищет что-то для преобразования позволяет сказать: H в 0048, от 00 до 8 и т. Д. – Kwyjibo

0

Вот кое-что я изменил от отладки класса шахты

/** 
* Display utf && non-printable characters as hex 
* 
* @param string $str  string containing binary 
* @param boolean $htmlout add html markup? 
* 
* @return string 
*/ 
public function strInspect($str) 
{ 
    $this->htmlout = $htmlout; 
    $regex = <<<EOD 
/
([\x01-\x7F])     # single-byte sequences 0xxxxxxx (ascii 0 - 127) 
| (
    (?: [\xC0-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx 
    | [\xE0-\xEF][\x80-\xBF]{2} # triple-byte sequences 1110xxxx 10xxxxxx * 2 
    | [\xF0-\xF7][\x80-\xBF]{3} # quadruple-byte sequence 11110xxx 10xxxxxx * 3 
){1,100}      # ...one or more times 
) 
| ([\x80-\xBF])    # invalid byte in range 10000000 - 10111111 128 - 191 
| ([\xC0-\xFF])    # invalid byte in range 11000000 - 11111111 192 - 255 
| (.)       # null (including x00 in the regex = fail) 
/x 
EOD; 
    $str_orig = $str; 
    $strlen = strlen($str); 
    $str = preg_replace_callback($regex, 'strInspectCallback', $str); 
    return $str; 
} 

/** 
* Callback used by strInspect's preg_replace_callback 
* 
* @param array $matches matches 
* 
* @return string 
*/ 
protected function strInspectCallback($matches) 
{ 
    $showHex = false; 
    if ($matches[1] !== '') { 
     // single byte sequence (may contain control char) 
     $str = $matches[1]; 
     if (ord($str) < 32 || ord($str) == 127) { 
      $showHex = true; 
      if (in_array($str, array("\t","\n","\r"))) { 
       $showHex = false; 
      } 
     } 
    } elseif ($matches[2] !== '') { 
     // Valid byte sequence. return unmodified. 
     $str = $matches[2]; 
     $sequences = array(
      "\xef\xbb\xbf", // BOM 
      "\xc2\xa0",  // no-break space 
      // "\xE2\x80\x89", // thin space 
      // "\xE2\x80\xAF", // narrow no-break space 
      "\xEF\xBF\xBD",  // "Replacement Character" 
     ); 
     foreach ($sequences as $seq) { 
      if ($str === $seq) { 
       $showHex = true; 
       break; 
      } 
     } 
    } elseif ($matches[3] !== '' || $matches[4] !== '') { 
     // Invalid byte 
     $str = $matches[3] != '' 
      ? $matches[3] 
      : $matches[4]; 
     $showHex = true; 
    } else { 
     // null char 
     $str = $matches[5]; 
     $showHex = true; 
    } 
    if ($showHex) { 
     $chars = str_split($str); 
     foreach ($chars as $i => $c) { 
      $chars[$i] = '\x'.bin2hex($c); 
     } 
     $str = implode('', $chars); 
    } 
    return $str; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^