- preg_replace: documentation ( source)
<?php
$string = ' Namnet på bildtävlingen nº1@2020-`24...like&share';
$slug = \Transliterator::createFromRules("
:: Any-Latin;
:: NFD;
:: [:Mn:] Remove;
:: NFKC;
:: Latin-ASCII;
:: Lower();
^[^[:Ll:][:Nd:]]+ > ;
[^[:Ll:][:Nd:]]+$ > ;
[^[:Ll:][:Nd:]]+ > '-';
")->transliterate($string);
$slug = preg_replace(['/[^a-z0-9-]+/', '/^-+|(?<=-)-+|-+$/'], '', $slug);
$slugPrev = \Transliterator::createFromRules("
:: Any-Latin;
:: NFD;
:: [:Nonspacing Mark:] Remove;
:: NFC;
:: [^-[:^Punctuation:]] Remove;
:: Lower();
[:^L:] { [-] > ;
[-] } [:^L:] > ;
[-[:Separator:]]+ > '-';
")->transliterate($string);
echo "$slugPrev -> $slug";