szurubooru/src/Helpers/TextHelper.php

133 lines
2.7 KiB
PHP
Raw Normal View History

2013-10-05 12:55:03 +02:00
<?php
class TextHelper
{
public static function isValidEmail($email)
{
$emailRegex = '/^[^@]+@[^@]+\.[^@]+$/';
return preg_match($emailRegex, $email);
}
public static function replaceTokens($text, array $tokens)
{
foreach ($tokens as $key => $value)
{
$token = '{' . $key . '}';
$text = str_replace($token, $value, $text);
}
return $text;
}
2013-10-06 13:21:16 +02:00
2013-10-07 23:17:33 +02:00
public static function kebabCaseToCamelCase($string)
{
$string = preg_split('/-/', $string);
$string = array_map('trim', $string);
$string = array_map('ucfirst', $string);
$string = join('', $string);
return $string;
}
public static function camelCaseToKebabCase($string)
{
$string = preg_replace_callback('/[A-Z]/', function($x)
{
return '-' . strtolower($x[0]);
}, $string);
$string = trim($string, '-');
return $string;
}
2013-10-06 13:21:16 +02:00
public static function resolveConstant($constantName, $className = null)
{
2013-10-07 23:17:33 +02:00
$constantName = self::kebabCaseToCamelCase($constantName);
2013-10-06 13:21:16 +02:00
//convert from kebab-case to CamelCase
if ($className !== null)
{
$constantName = $className . '::' . $constantName;
}
if (!defined($constantName))
{
throw new Exception('Undefined constant: ' . $constantName);
}
return constant($constantName);
}
2013-10-12 10:46:15 +02:00
private static function useUnits($number, $base, $suffixes)
{
$suffix = array_shift($suffixes);
if ($number < $base)
{
return sprintf('%d%s', $number, $suffix);
}
do
{
$suffix = array_shift($suffixes);
$number /= (float) $base;
}
while ($number >= $base and !empty($suffixes));
return sprintf('%.01f%s', $number, $suffix);
}
public static function useBytesUnits($number)
{
return self::useUnits($number, 1024, ['B', 'K', 'M', 'G']);
}
public static function useDecimalUnits($number)
{
return self::useUnits($number, 1000, ['', 'K', 'M']);
}
2013-10-13 22:58:02 +02:00
public static function removeUnsafeKeys(&$input, $regex)
{
if (is_array($input))
{
foreach ($input as $key => $val)
{
if (preg_match($regex, $key))
unset($input[$key]);
else
self::removeUnsafeKeys($input[$key], $regex);
}
}
elseif (is_object($input))
{
foreach ($input as $key => $val)
{
if (preg_match($regex, $key))
unset($input->$key);
else
self::removeUnsafeKeys($input->$key, $regex);
}
}
}
public static function jsonEncode($obj, $illegalKeysRegex = '')
{
if (is_array($obj))
{
foreach ($obj as $key => $val)
{
if ($val instanceof RedBean_OODBBean)
{
$obj[$key] = R::exportAll($val);
}
}
}
elseif (is_object($obj))
{
foreach ($obj as $key => $val)
{
if ($val instanceof RedBean_OODBBean)
{
$obj->$key = R::exportAll($val);
}
}
}
if (!empty($illegalKeysRegex))
self::removeUnsafeKeys($obj, $illegalKeysRegex);
2013-10-13 23:02:57 +02:00
return json_encode($obj);
2013-10-13 22:58:02 +02:00
}
2013-10-05 12:55:03 +02:00
}