//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
//Convert string to safe slug
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))), '-')));
}
}