Chodzi o oczyszczenie tekstu z znaków specjalnych, polskich ogonków, spacji i innych. Dodatkowo możemy określić czy tekst będzie mógł zawierać dodatkowo rozszerzenie.

function sanitize($string = '', $file = false) {
  // Zamiana polskich znaków
  $pl = array('ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż', 'Ą', 'Ć', 'Ę', 'Ł', 'Ń', 'Ó', 'Ś', 'Ź', 'Ż');
  $lat = array('a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z', 'A', 'C', 'E', 'L', 'N', 'O', 'S', 'Z', 'Z');
  $string = str_replace($pl, $lat, $string);
  // Usunięcie znaków specjalnych
  $string = preg_replace('/[^\w\-' . ($file ? '~_\.' : '') . ']+/u', '-', $string);
  // Usunięcie powielonych spacji i zamiana liter na małe
  $string = mb_strtolower(preg_replace('/–+/u', '-', $string), 'UTF-8');
  // Usunięcie spacji z początku i końca tekstu
  $string = trim($string, '-');
  return $string;}