//Retrieve secret and set offset from reduction
public function __construct(ContainerInterface $container) {
//Set secret
- $this->secret = $container->getParameter('kernel.secret');
+ $this->secret = $_SERVER['APP_SECRET'] ?? $container->getParameter('kernel.secret');
//Pseudo-random alphabet
//XXX: use array flip and keys to workaround php "smart" that cast range('0', '9') as int instead of string
}
//Short the string
- public function short($string) {
+ public function short(string $string): string {
//Return string
$ret = '';
}
//Unshort the string
- public function unshort($string) {
+ public function unshort(string $string): string {
//Return string
$ret = '';
}
//Crypt and base64uri encode string
- public function hash($string) {
+ public function hash(string $string): string {
return str_replace(['+','/'], ['-','_'], base64_encode(crypt($string, $this->secret)));
}
//Convert string to safe slug
- function slug($string) {
+ function slug(string $string): string {
+ //Use Transliterator if available
+ if (class_exists('Transliterator')) {
+ $trans = Transliterator::create('Any-Latin; Latin-ASCII; Lower()');
+ return preg_replace(['/[^a-zA-Z0-9]+/', '/(^-+|-+$)/'], ['-', ''], $trans->transliterate($string));
+ }
return preg_replace('/[\/_|+ -]+/', '-', strtolower(trim(preg_replace('/[^a-zA-Z0-9\/_|+ -]/', '', str_replace(['\'', '"'], ' ', iconv('UTF-8', 'ASCII//TRANSLIT', $string))), '-')));
}
}