溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP中unicode與普通字符串相互轉(zhuǎn)化的方法是什么

發(fā)布時間:2020-08-25 11:13:20 來源:億速云 閱讀:147 作者:小新 欄目:編程語言

小編給大家分享一下PHP中unicode與普通字符串相互轉(zhuǎn)化的方法是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

unicode轉(zhuǎn)字符串

方法一:json

/**
   * unicode轉(zhuǎn)字符串,通過json轉(zhuǎn)化
   * @param $str
   * @return string
   */
  function unicode_decode_by_json($str)
  {
    $json = '{"str":"' . $str . '"}';
    $arr = json_decode($json, true);
    if (empty($arr)) return '';
    return $arr['str'];
  }

方法二:

/**
   * unicode轉(zhuǎn)中文
   * @param $data
   * @return null|string|string[]
   */
  function unicode_decode($data)
  {
    $rs = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $data);
    return $rs;
  }

  function replace_unicode_escape_sequence($match)
  {
    return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
  }

字符串轉(zhuǎn)unicode

/**
   * @param  string $str 需轉(zhuǎn)換字符,這里為單個字符
   * @return string
   */
  function get_unicode($str)
  {
    $bin_str = '';
    $arr = is_array($str) ? $str : str_split($str);//獲取字符內(nèi)部數(shù)組表示,此時$arr應(yīng)類似array(228, 189, 160)
    foreach ($arr as $value) $bin_str .= decbin(ord($value));//轉(zhuǎn)成數(shù)字再轉(zhuǎn)成二進制字符串,$bin_str應(yīng)類似111001001011110110100000,如果是漢字"你"
    $bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/', '$1$2$3', $bin_str);//正則截取, $bin_str應(yīng)類似0100111101100000,如果是漢字"你"

    $unicode = dechex(bindec($bin_str));//返回unicode十六進制

    $_sup = '';
    for ($i = 0; $i < 4 - strlen($unicode); $i++) $_sup .= '0';//補位高字節(jié) 0

    return '\\u' . $_sup . $unicode; //加上 \u  返回
  }

  /**
   * 轉(zhuǎn)化字符串為unicode
   * @param $str string 可單個/復數(shù)個
   * @return string
   */
  function unicode_encode($str)
  {
    $_arr_str = preg_split('/(?<!^)(?!$)/u', $str);//拆分字符串為數(shù)組(含中文字符)

    $_ret_unicode = '';
    foreach ($_arr_str as $_str) $_ret_unicode .= get_unicode($_str);

    return $_ret_unicode;
  }

測試效果:

 $_str_test = 'see,你看我哪里像好人';
  $_unicode = unicode_encode($_str_test);


  echo $_str_test . ' <b style="color: red">=></b> ' . $_unicode, '<br><br>';
  echo $_unicode . ' <b style="color: red">=></b> ' . unicode_decode($_unicode), '<br><br>';
  echo $_unicode . ' <b style="color: red">=></b> ' . unicode_decode_by_json($_unicode), '<br><br>';

以上是PHP中unicode與普通字符串相互轉(zhuǎn)化的方法是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI