[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 namespace Algo26\IdnaConvert\EncodingHelper; 4 5 class ToUtf8 implements EncodingHelperInterface 6 { 7 private const DEFAULT_ENCODING = 'ISO-8859-1'; 8 9 private $encoding = self::DEFAULT_ENCODING; 10 11 public function convert( 12 string $sourceString, 13 ?string $encoding = self::DEFAULT_ENCODING, 14 ?bool $safeMode = false 15 ) { 16 $safe = ($safeMode) ? $sourceString : false; 17 18 if ($encoding !== null) { 19 $this->encoding = strtoupper($encoding); 20 } else { 21 $this->encoding = 'ISO-8859-1'; 22 } 23 24 if ($this->encoding === 'UTF-8' || $this->encoding === 'UTF8') { 25 return $sourceString; 26 } 27 28 if ($this->encoding === 'ISO-8859-1') { 29 return utf8_encode($sourceString); 30 } 31 32 if ($this->encoding === 'WINDOWS-1252') { 33 return utf8_encode($this->mapWindows1252ToIso8859_1($sourceString)); 34 } 35 36 if ($this->encoding === 'UNICODE-1-1-UTF-7') { 37 $this->encoding = 'UTF-7'; 38 } 39 40 $converted = $this->convertWithLibraries($sourceString); 41 if (false !== $converted) { 42 return $converted; 43 } 44 45 return $safe; 46 } 47 48 /** 49 * Special treatment for our guys in Redmond 50 * Windows-1252 is basically ISO-8859-1 -- with some exceptions, which get dealt with here 51 * 52 * @param string $string Your input in Win1252 53 * 54 * @return string The resulting ISO-8859-1 string 55 * @since 0.0.1 56 */ 57 private function mapWindows1252ToIso8859_1($string = '') 58 { 59 $return = ''; 60 for ($i = 0; $i < strlen($string); ++$i) { 61 $codePoint = ord($string[$i]); 62 switch ($codePoint) { 63 case 129: 64 $return .= chr(252); 65 break; 66 case 132: 67 $return .= chr(228); 68 break; 69 case 142: 70 $return .= chr(196); 71 break; 72 case 148: 73 $return .= chr(246); 74 break; 75 case 153: 76 $return .= chr(214); 77 break; 78 case 154: 79 $return .= chr(220); 80 break; 81 case 225: 82 $return .= chr(223); 83 break; 84 default: 85 $return .= chr($codePoint); 86 } 87 } 88 89 return $return; 90 } 91 92 private function convertWithLibraries(string $string): ?string 93 { 94 if (function_exists('mb_convert_encoding')) { 95 $converted = @mb_convert_encoding($string, 'UTF-8', $this->encoding); 96 if (false !== $converted) { 97 return $converted; 98 } 99 } 100 101 if (function_exists('iconv')) { 102 $converted = @iconv($this->encoding, 'UTF-8', $string); 103 if (false !== $converted) { 104 return $converted; 105 } 106 } 107 108 if (function_exists('libiconv')) { 109 $converted = @libiconv($this->encoding, 'UTF-8', $string); 110 if (false !== $converted) { 111 return $converted; 112 } 113 } 114 115 return false; 116 } 117 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |