Infatti str_replace() non modifica mica il nome di un file! Genera invece una stringa (frase) che puoi "usare" come nome di un file.
Comunque mi sono accorto adesso che c'è un errore, cioè il link non è chiuso e probabilmente è per questo che non funziona, devi modificarlo così:
Codice PHP:
echo "<a href=\"http://www.miosito.altervista.org/{$_FILES['file']['name']}\">{$_FILES['file']['name']}</a>";
così dovrebbe funzionare anche se ci sono spazi nel nome.
Uso dei backslash: il backslash (\) si dice "carattere di escape", ovvero che il carattere speciale subito dopo il \ viene considerato con il suo valore letterale. Nel caso di stringhe, in PHP i caratteri speciali sono ", ', {, }.
Codice PHP:
echo "Ciao!";
stamperà semplicemente: Ciao!
Codice PHP:
echo 'Entrò e salutò dicendo: "Ciao!" e si sedette';
stamperà la stringa correttamente: la stringa è delimitata da apici, le virgolette in questo caso non sono caratteri speciali
Codice PHP:
echo "Entrò e salutò dicendo: "Ciao!" e si sedette";
darà errore di sintassi: la stringa in questo caso risulta essere [Entrò e salutò dicendo: ]
Codice PHP:
echo "Entrò e salutò dicendo: \"Ciao!\" e si sedette";
stamperà la stringa [Entrò e salutò dicendo: "Ciao!" e si sedette] perchè i \ davanti le virgolette le "escappano" leggendole semplicemente come virgolette e non come delimitatori di stringa!