You are here

function ARC_api_helper::adjust_utf8_string in Taxonomy import/export via XML 5.2

Same name and namespace in other branches
  1. 5 arc/ARC_api_helper.php \ARC_api_helper::adjust_utf8_string()
  2. 6.2 arc/ARC_api_helper.php \ARC_api_helper::adjust_utf8_string()
  3. 6 arc/ARC_api_helper.php \ARC_api_helper::adjust_utf8_string()

File

arc/ARC_api_helper.php, line 68

Class

ARC_api_helper

Code

function adjust_utf8_string($val = "") {
  if (utf8_decode($val) == $val) {
    return $val;
  }
  $val = strpos(utf8_decode(str_replace("?", "", $val)), "?") === false ? utf8_decode($val) : $val;
  $length = strlen($val);
  $new_val = "";
  $tmp = "";
  $do_enc = true;
  for ($i = 0, $i_max = $length; $i < $i_max; $i++) {
    $is_special = false;
    $cur_char = $val[$i];
    $enc_char = rawurlencode($cur_char);
    $new_char = "";
    if ($cur_char == $enc_char) {
    }
    elseif ($enc_char == "%B4") {
      $cur_char .= "'";
    }
    else {
      $utf_char = utf8_encode($cur_char);
      $bytes = strlen($utf_char);
      if ($bytes > 1) {
        $tmp .= $cur_char;
        $is_special = true;
        $cur_char = "";
      }
      else {
        $cur_char = $utf_char;
      }
    }
    if (!$is_special) {
      $new_val .= $tmp ? $this
        ->adjust_utf8_char($tmp) . $cur_char : $cur_char;
      $tmp = "";
    }
  }

  /* remaining tmp ? */
  if ($tmp) {
    $new_val .= $this
      ->adjust_utf8_char($tmp);
  }
  return $do_enc ? utf8_encode($new_val) : $new_val;
}