<?php namespace PHPFUI; class TextHelper { public static function arrayToJS(array $array, string $stringQuote = '', string $newLine = '') : string { $normalArray = \is_numeric(\key($array)); $js = $normalArray ? '[' : '{'; $comma = ''; foreach ($array as $key => $value) { $js .= $comma; if (! $normalArray) { if (! \ctype_alpha($key[0])) { $key = "{$stringQuote}{$key}{$stringQuote}"; } $js .= $key . ':'; } $comma = ',' . $newLine; switch (\gettype($value)) { case 'object': $value = \json_decode(\json_encode($value), true, 512); case 'array': $js .= self::arrayToJS($value, $stringQuote); break; case 'boolean': $js .= $value ? 'true' : 'false'; break; case 'string': $value = "{$stringQuote}{$value}{$stringQuote}"; case 'integer': case 'double': $js .= $value; break; case 'resource': case 'NULL': case 'unknown type': $js .= 'null'; } } return $js . ($normalArray ? ']' : '}'); } public static function capitalSplit(string $key) : string { $len = \strlen($key); $space = $output = ''; $lastCapitalized = false; $consecutiveCaps = 0; for ($i = 0; $i < $len; ++$i) { $char = $key[$i]; if (0 == $i) { $char = \strtoupper($char); } if (\ctype_upper($char)) { if (! $lastCapitalized) { $output .= $space; } ++$consecutiveCaps; $space = ' '; $lastCapitalized = true; } elseif ($lastCapitalized) { $length = \strlen($output); if ($length > 1 && $consecutiveCaps > 1) { $output = \substr($output, 0, $length - 1) . ' ' . $output[$length - 1]; } $consecutiveCaps = 0; $lastCapitalized = false; } $output .= $char; } return $output; } public static function htmlentities(?string $string) : string { if (! $string) { return ''; } return \htmlentities($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8', false); } public static function replace_unicode_escape_sequence(array $match) : string { return \mb_convert_encoding(\pack('H*', $match[1]), 'UTF-8', 'UCS-2BE'); } public static function unhtmlentities(?string $string) : string { if (! $string) { return ''; } return \htmlspecialchars_decode($string, ENT_QUOTES | ENT_HTML5); } public static function unicode_decode(string $str) : string { return \preg_replace_callback('/\\\\u([0-9a-f]{4})/i', '\PHPFUI\TextHelper::replace_unicode_escape_sequence', $str); } }