• User

    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.html

    un indirizzo "pulito" tipo
    => www.qualcosa.it/news/l_altro_titolo_di_questa_news_e_senzaltro_migliore.html

    ho 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


  • User Attivo

    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; 
    } 
    **
    

  • User

    @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 simile

    ma 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


  • User

    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