- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- Funzione "pulisci url" per mod rewrite
-
Funzione "pulisci url" per mod rewrite
Salve a tutti,
mi sto apprestando da poco alla riscrittura degli url di pagine dinamiche in php.
Sono riuscito ad impostare correttamente gli indirizzi e le rewrite rules nel file .htaccess
Ho qualche perplessità sul passo per me successivo, ovvero: la generazione degli url "statici" contenenti titolo e/o descrizione del contenuto.
in particolare devo generare al posto di
=> www.qualcosa.it/news/L'altro titolo di questa news è senz'altro migliore.htmlun indirizzo "pulito" tipo
=> www.qualcosa.it/news/l_altro_titolo_di_questa_news_e_senzaltro_migliore.htmlho trovato vari script che passano i caratteri "incriminati" in str_replace ma sto preparando questi script anche per siti multilingua e cerco uno script il più completo possibile, che comprenda quindi tutti i caratteri possibili e immaginabili da sostituire, così da generare un indirizzo corretto.
sapete consigliarmene qualcuno?
grazie mille ragazzi,
scapritta
-
Io uso questo e non mi ha mai dato problemi:
**// // DA UNA STRINGA LA FA DIVENTARE UTILE PER URL // function pulisciUrl($url) { $url = strtolower($url); $find = array(' ', '&', '\r\n', '\n', '/', '\\', '+'); $url = str_replace ($find, '-', $url); $find = array(' ', 'é', 'è', 'ë', 'ê'); $url = str_replace ($find, 'e', $url); $find = array(' ', 'ó', 'ò', 'ô', 'ö'); $url = str_replace ($find, 'o', $url); $find = array(' ', 'á', 'à', 'â', 'ä'); $url = str_replace ($find, 'a', $url); $find = array(' ', 'í', 'ì', 'î', 'ï'); $url = str_replace ($find, 'i', $url); $find = array(' ', 'ú', 'ù', 'û', 'ü'); $url = str_replace ($find, 'u', $url); $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/'); $repl = array('', '-', ''); $url = preg_replace ($find, $repl, $url); return $url; } **
-
@Senamion said:
Io uso questo e non mi ha mai dato problemi:
**// // DA UNA STRINGA LA FA DIVENTARE UTILE PER URL // function pulisciUrl($url) { $url = strtolower($url); $find = array(' ', '&', '\r\n', '\n', '/', '\\', '+'); $url = str_replace ($find, '-', $url); $find = array(' ', 'é', 'è', 'ë', 'ê'); $url = str_replace ($find, 'e', $url); $find = array(' ', 'ó', 'ò', 'ô', 'ö'); $url = str_replace ($find, 'o', $url); $find = array(' ', 'á', 'à', 'â', 'ä'); $url = str_replace ($find, 'a', $url); $find = array(' ', 'í', 'ì', 'î', 'ï'); $url = str_replace ($find, 'i', $url); $find = array(' ', 'ú', 'ù', 'û', 'ü'); $url = str_replace ($find, 'u', $url); $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/'); $repl = array('', '-', ''); $url = preg_replace ($find, $repl, $url); return $url; } **
Grazie Senamion,
ne ho trovato uno similema a me servirebbe un controllo più esteso (i titoli nel db sono memorizzati anche con ü e codici vari in varie lingue) e prima di scrivere tutti i possibili caratteri sto cercando se trovo già qualcosa di esistente
-
Sto cercando pian piano (negli spazi liberi) di implementare la funzione "base" con tutte le lettere e i simboli (soprattutto in caso di lingue straniere)
se può essere utile lo posterò qui, sia per condividere con chi si trova ad avere la mia stessa esigenza, sia anche per controllare se e come può essere ottimizzato.
ma intanto volevo fare una domanda (dovuta alla mia ignoranza delle regexp):
- cosa sta indicare questa espressione regolare =>
$find = array('/[^a-z0-9-<>]/', '/[-]+/', '/<[^>]*>/');
a presto,
scapritta
- cosa sta indicare questa espressione regolare =>