As iconv is now enabled by default in PHP, make it a requirement, and modify strig functions to use it where appropriate
This commit is contained in:
		
							parent
							
								
									e0a9f9e1ec
								
							
						
					
					
						commit
						fae27a6d63
					
				| @ -25,6 +25,7 @@ | |||||||
|     "require": { |     "require": { | ||||||
|         "php": "^5.5|^7.0", |         "php": "^5.5|^7.0", | ||||||
|         "ext-mbstring": "*", |         "ext-mbstring": "*", | ||||||
|  |         "ext-iconv": "*", | ||||||
|         "ext-xml": "*", |         "ext-xml": "*", | ||||||
|         "ext-xmlwriter": "*" |         "ext-xmlwriter": "*" | ||||||
|     }, |     }, | ||||||
|  | |||||||
| @ -38,7 +38,7 @@ class Autoloader | |||||||
|             spl_autoload_register('__autoload'); |             spl_autoload_register('__autoload'); | ||||||
|         } |         } | ||||||
|         // Register ourselves with SPL
 |         // Register ourselves with SPL
 | ||||||
|         return spl_autoload_register([\PhpSpreadsheet\Autoloader::class, 'load']); |         return spl_autoload_register([\PhpSpreadsheet\Autoloader::class, 'load'], true, true); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | |||||||
| @ -28,26 +28,9 @@ class TextData | |||||||
| { | { | ||||||
|     private static $invalidChars; |     private static $invalidChars; | ||||||
| 
 | 
 | ||||||
|     private static function unicodeToOrd($c) |     private static function unicodeToOrd($character) | ||||||
|     { |     { | ||||||
|         if (ord($c{0}) >= 0 && ord($c{0}) <= 127) { |         return unpack('V', iconv('UTF-8', 'UCS-4LE', $character))[1]; | ||||||
|             return ord($c{0}); |  | ||||||
|         } elseif (ord($c{0}) >= 192 && ord($c{0}) <= 223) { |  | ||||||
|             return (ord($c{0}) - 192) * 64 + (ord($c{1}) - 128); |  | ||||||
|         } elseif (ord($c{0}) >= 224 && ord($c{0}) <= 239) { |  | ||||||
|             return (ord($c{0}) - 224) * 4096 + (ord($c{1}) - 128) * 64 + (ord($c{2}) - 128); |  | ||||||
|         } elseif (ord($c{0}) >= 240 && ord($c{0}) <= 247) { |  | ||||||
|             return (ord($c{0}) - 240) * 262144 + (ord($c{1}) - 128) * 4096 + (ord($c{2}) - 128) * 64 + (ord($c{3}) - 128); |  | ||||||
|         } elseif (ord($c{0}) >= 248 && ord($c{0}) <= 251) { |  | ||||||
|             return (ord($c{0}) - 248) * 16777216 + (ord($c{1}) - 128) * 262144 + (ord($c{2}) - 128) * 4096 + (ord($c{3}) - 128) * 64 + (ord($c{4}) - 128); |  | ||||||
|         } elseif (ord($c{0}) >= 252 && ord($c{0}) <= 253) { |  | ||||||
|             return (ord($c{0}) - 252) * 1073741824 + (ord($c{1}) - 128) * 16777216 + (ord($c{2}) - 128) * 262144 + (ord($c{3}) - 128) * 4096 + (ord($c{4}) - 128) * 64 + (ord($c{5}) - 128); |  | ||||||
|         } elseif (ord($c{0}) >= 254 && ord($c{0}) <= 255) { |  | ||||||
|             // error
 |  | ||||||
|             return Functions::VALUE(); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         return 0; |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -64,11 +47,11 @@ class TextData | |||||||
|             return Functions::VALUE(); |             return Functions::VALUE(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (function_exists('mb_convert_encoding')) { |         if (function_exists('iconv')) { | ||||||
|             return mb_convert_encoding('&#' . intval($character) . ';', 'UTF-8', 'HTML-ENTITIES'); |             return iconv('UCS-4LE', 'UTF-8', pack('V', $character)); | ||||||
|         } else { |  | ||||||
|             return chr(intval($character)); |  | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         return mb_convert_encoding('&#' . intval($character) . ';', 'UTF-8', 'HTML-ENTITIES'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | |||||||
| @ -1,24 +1,15 @@ | |||||||
| <?php | <?php | ||||||
| 
 | 
 | ||||||
| return [ | return [ | ||||||
|     [ |     [ 'ABC', '#VALUE!' ], | ||||||
|         'ABC', |     [ -5, '#VALUE!' ], | ||||||
|         '#VALUE!', |     [ 65, 'A' ], | ||||||
|     ], |     [ 123, '{' ], | ||||||
|     [ |     [ 126, '~' ], | ||||||
|         -5, |     [ 12103, "⽇" ], | ||||||
|         '#VALUE!', |     [ 0x153, 'œ' ], | ||||||
|     ], |     [ 0x192, 'ƒ' ], | ||||||
|     [ |     [ 0x2105, '℅' ], | ||||||
|         65, |     [ 0x2211, '∑' ], | ||||||
|         'A', |     [ 0x2020, '†' ], | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|         123, |  | ||||||
|         '{', |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|         126, |  | ||||||
|         '~', |  | ||||||
|     ], |  | ||||||
| ]; | ]; | ||||||
|  | |||||||
| @ -1,48 +1,21 @@ | |||||||
| <?php | <?php | ||||||
| 
 | 
 | ||||||
| return [ | return [ | ||||||
|     [ |     [ null, '#VALUE!' ], | ||||||
|         null, |     [ '', '#VALUE!', ], | ||||||
|         '#VALUE!', |     [ 'ABC', 65 ], | ||||||
|     ], |     [ 123, 49 ], | ||||||
|     [ |     [ true, 84 ], | ||||||
|         '', |     [ 'DEF', 68 ], | ||||||
|         '#VALUE!', |     [ 'PhpSpreadsheet', 80 ], | ||||||
|     ], |     [ 1.5, 49 ], | ||||||
|     [ |     [ 'Mark Baker', 77 ], | ||||||
|         'ABC', |     [ 'mark baker', 109 ], | ||||||
|         65, |     [ '£125.00', 163 ], | ||||||
|     ], |     [ "⽇", 12103], | ||||||
|     [ |     [ 'œ', 0x153 ], | ||||||
|         123, |     [ 'ƒ', 0x192 ], | ||||||
|         49, |     [ '℅', 0x2105 ], | ||||||
|     ], |     [ '∑', 0x2211 ], | ||||||
|     [ |     [ '†', 0x2020 ], | ||||||
|         true, |  | ||||||
|         84, |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|         'DEF', |  | ||||||
|         68, |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|         'PhpSpreadsheet', |  | ||||||
|         80, |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|         1.5, |  | ||||||
|         49, |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|         'Mark Baker', |  | ||||||
|         77, |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|         'mark baker', |  | ||||||
|         109, |  | ||||||
|     ], |  | ||||||
|     [ |  | ||||||
|         '£125.00', |  | ||||||
|         163, |  | ||||||
|     ], |  | ||||||
| ]; | ]; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 MarkBaker
						MarkBaker