Non c'è un posto dove hai usato gli apici nel modo adeguato.
Codice PHP:
print "$array[id]"
Attorno ad una variabile non è necessario mettere gli apici.
print $array[id];
fa la stessa cosa in modo leggittimo.
Sempre sullo stesso pezzetto di codice: per indicare l'indice di un array si che servono gli apici, non è obbligatorio, ma su alcune versioni di PHP può dare noie, meglio non rischiare, quindi
$array['id']
$array['titolo']
Codice PHP:
header("location: http://www.nomesito.it/$array[id]-categoria-'togli_spazio("$array[titolo]")'.php");
che ci stanno a fare gli apici attorno alla funzione togli_spazio() ? Scritta così ti ritroverai stampati nella stringa quegli apici.
Farei così
Codice PHP:
$titolo = togli_spazio($array['titolo']);
header("location: http://www.nomesito.it/$array['id']-categoria-$titolo.php");