Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
// $Header: /cvsroot/html2ps/converter.class.php,v 1.6 2006/06/25 13:55:35 Konstantin Exp $
3
 
4
class Converter {
5
  function create() {
6
//     if (function_exists('iconv')) {
7
//       return new IconvConverter;
8
//     } else {
9
      return new PurePHPConverter;
10
//     }
11
  }
12
}
13
 
14
class IconvConverter {
15
  function to_utf8($string, $encoding) {
16
    return iconv(strtoupper($encoding), "UTF-8", $string);
17
  }
18
}
19
 
20
class PurePHPConverter {
21
  function apply_aliases($encoding) {
22
    global $g_encoding_aliases;
23
 
24
    if (isset($g_encoding_aliases[$encoding])) {
25
      return $g_encoding_aliases[$encoding];
26
    }
27
 
28
    return $encoding;
29
  }
30
 
31
  function to_utf8($html, $encoding) {
32
    global $g_utf8_converters;
33
 
34
    $encoding = $this->apply_aliases($encoding);
35
 
36
    if ($encoding === 'iso-8859-1') {
37
      return utf8_encode($html);
38
    } elseif ($encoding === 'utf-8') {
39
      return $html;
40
    } elseif(isset($g_utf8_converters[$encoding])) {
41
      return $this->something_to_utf8($html, $g_utf8_converters[$encoding][0]);
42
    } else {
43
      die("Unsupported encoding detected: '$encoding'");
44
    };
45
  }
46
 
47
  function something_to_utf8($html, &$mapping) {
48
    for ($i=0; $i < strlen($html); $i++) {
49
      $replacement = code_to_utf8($mapping[$html{$i}]);
50
      if ($replacement != $html{$i}) {
51
        $html = substr_replace($html, $replacement, $i, 1);
52
        $i += strlen($replacement) - 1;
53
      };
54
    };
55
    return $html;
56
  }
57
}
58
?>