[ Index ]

PHP Cross Reference of phpwcms V1.5.0 _r431 (28.01.12)

title

Body

[close]

/include/inc_ext/idna_convert/ -> transcode_wrapper.php (source)

   1  <?php
   2  /**
   3   * transcode wrapper functions
   4   * @package IDNA Convert
   5   * @subpackage charset transcoding
   6   * @author Matthias Sommerfeld, <mso@phlylabs.de>
   7   * @version 0.1.0
   8   */
   9  
  10  /**
  11   * Convert a string from any of various encodings to UTF-8
  12   *
  13   * @param  string  String to encode
  14   *[@param  string  Encoding; Default: ISO-8859-1]
  15   *[@param  bool  Safe Mode: if set to TRUE, the original string is retunred on errors]
  16   * @return  string  The encoded string or false on failure
  17   * @since 0.0.1
  18   */
  19  function encode_utf8($string = '', $encoding = 'iso-8859-1', $safe_mode = false)
  20  {
  21      $safe = ($safe_mode) ? $string : false;
  22      if (strtoupper($encoding) == 'UTF-8' || strtoupper($encoding) == 'UTF8') {
  23          return $string;
  24      } elseif (strtoupper($encoding) == 'ISO-8859-1') {
  25          return utf8_encode($string);
  26      } elseif (strtoupper($encoding) == 'WINDOWS-1252') {
  27          return utf8_encode(map_w1252_iso8859_1($string));
  28      } elseif (strtoupper($encoding) == 'UNICODE-1-1-UTF-7') {
  29          $encoding = 'utf-7';
  30      }
  31      if (function_exists('mb_convert_encoding')) {
  32          $conv = @mb_convert_encoding($string, 'UTF-8', strtoupper($encoding));
  33          if ($conv) return $conv;
  34      }
  35      if (function_exists('iconv')) {
  36          $conv = @iconv(strtoupper($encoding), 'UTF-8', $string);
  37          if ($conv) return $conv;
  38      }
  39      if (function_exists('libiconv')) {
  40          $conv = @libiconv(strtoupper($encoding), 'UTF-8', $string);
  41          if ($conv) return $conv;
  42      }
  43      return $safe;
  44  }
  45  
  46  /**
  47   * Convert a string from UTF-8 to any of various encodings
  48   *
  49   * @param  string  String to decode
  50   *[@param  string  Encoding; Default: ISO-8859-1]
  51   *[@param  bool  Safe Mode: if set to TRUE, the original string is retunred on errors]
  52   * @return  string  The decoded string or false on failure
  53   * @since 0.0.1
  54   */
  55  function decode_utf8($string = '', $encoding = 'iso-8859-1', $safe_mode = false)
  56  {
  57      $safe = ($safe_mode) ? $string : false;
  58      if (!$encoding) $encoding = 'ISO-8859-1';
  59      if (strtoupper($encoding) == 'UTF-8' || strtoupper($encoding) == 'UTF8') {
  60          return $string;
  61      } elseif (strtoupper($encoding) == 'ISO-8859-1') {
  62          return utf8_decode($string);
  63      } elseif (strtoupper($encoding) == 'WINDOWS-1252') {
  64          return map_iso8859_1_w1252(utf8_decode($string));
  65      } elseif (strtoupper($encoding) == 'UNICODE-1-1-UTF-7') {
  66          $encoding = 'utf-7';
  67      }
  68      if (function_exists('mb_convert_encoding')) {
  69          $conv = @mb_convert_encoding($string, strtoupper($encoding), 'UTF-8');
  70          if ($conv) return $conv;
  71      }
  72      if (function_exists('iconv')) {
  73          $conv = @iconv('UTF-8', strtoupper($encoding), $string);
  74          if ($conv) return $conv;
  75      }
  76      if (function_exists('libiconv')) {
  77          $conv = @libiconv('UTF-8', strtoupper($encoding), $string);
  78          if ($conv) return $conv;
  79      }
  80      return $safe;
  81  }
  82  
  83  /**
  84   * Special treatment for our guys in Redmond
  85   * Windows-1252 is basically ISO-8859-1 -- with some exceptions, which get accounted for here
  86   * @param  string  Your input in Win1252
  87   * @param  string  The resulting ISO-8859-1 string
  88   * @since 3.0.8
  89   */
  90  function map_w1252_iso8859_1($string = '')
  91  {
  92      if ($string == '') return '';
  93      $return = '';
  94      for ($i = 0; $i < strlen($string); ++$i) {
  95          $c = ord($string{$i});
  96          switch ($c) {
  97              case 129: $return .= chr(252); break;
  98              case 132: $return .= chr(228); break;
  99              case 142: $return .= chr(196); break;
 100              case 148: $return .= chr(246); break;
 101              case 153: $return .= chr(214); break;
 102              case 154: $return .= chr(220); break;
 103              case 225: $return .= chr(223); break;
 104              default: $return .= chr($c); break;
 105          }
 106      }
 107      return $return;
 108  }
 109  
 110  /**
 111   * Special treatment for our guys in Redmond
 112   * Windows-1252 is basically ISO-8859-1 -- with some exceptions, which get accounted for here
 113   * @param  string  Your input in ISO-8859-1
 114   * @param  string  The resulting Win1252 string
 115   * @since 3.0.8
 116   */
 117  function map_iso8859_1_w1252($string = '')
 118  {
 119      if ($string == '') return '';
 120      $return = '';
 121      for ($i = 0; $i < strlen($string); ++$i) {
 122          $c = ord($string{$i});
 123          switch ($c) {
 124              case 196: $return .= chr(142); break;
 125              case 214: $return .= chr(153); break;
 126              case 220: $return .= chr(154); break;
 127              case 223: $return .= chr(225); break;
 128              case 228: $return .= chr(132); break;
 129              case 246: $return .= chr(148); break;
 130              case 252: $return .= chr(129); break;
 131              default: $return .= chr($c); break;
 132          }
 133      }
 134      return $return;
 135  }
 136  
 137  ?>


Generated: Sun Jan 29 16:31:14 2012 Cross-referenced by PHPXref 0.7.1