<?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);
}
}