Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    regex: sostituire le maiuscole e salvare i trattini

    A forza di rompervi sono riuscito ad ottenere un url di questo genere: news.php?action=fullnews&id=26&TITOLO-PAGINA
    Con l'aiuto di un programma (regexbuddy)sono riuscito ad ottenere una regola del genere:
    codice:
    /news\\.php\\?action=fullnews&id=\\d+\\&(([A-Z]+)-)+/
    Solo che non ottengo proprio quello che volevo, e cioč mi seleziona tutto, mentre quello che vorrei č salvare i trattini e sostituire le maiuscole con le minuscole.
    In pratica, questo č l'url di adesso
    news.php?action=fullnews&id=26&TITOLO-PAGINA
    e questo č quello che vorrei ottenere:
    titolo-pagina.html
    Come dovrei compilare .htaccess, per sostituire le maiuscole con le minuscole?

    Come sempre grazie
    Ho visto cose...

  2. #2
    Mi potete almeno dare la regola per cambiare tutte le maiuscole presenti nell'url con le minuscole?
    Perfavore...
    Ho visto cose...

  3. #3
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    se ti puo' servire: strtolower($stringa); -- Converte in minuscolo una stringa
    La vita e' uno switch();

  4. #4
    Se avessimo tale regola te la daremmo ma non č possibile fare quello che vorresti. L'unico modo che hai č utilizzare strtolower, come giustamente ti ha suggerito marco80, su tutte le variabili GET con un foreach o, se preferisci, solo su quelle che lo richiedono.

    Perō non ho capito l'utilitā di scrivere una var get in maiuscolo! bho. Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick č mircov e non mirco!!!

  5. #5
    mica sono sicuro di aver capito cmq se da quello specifico url vuoi avere l'ultimo valore tutto in minuscolo prova cosė:
    codice:
    $reg = '/^news\.php\?action=fullnews&id=\d+&([\w\-]+?)$/e';
    echo preg_replace($reg,"strtolower('$1').'.html'",$t);
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  6. #6
    Grazie ragazzi , Funziona!
    Quello che mi avete detto voi (strtolower), l'ho aggiunto alle due righe che gia' avevo (togliere tutti i caratteri che non siano lettere e sostituire gli spazi con i trattini).
    Volevo solo chiedervi un ultima cosa: e' possibile dirgli di mettere massimo un trattino, tra una parola e l'altra, ed alla fine della frase togliere pure quello?
    Esempio
    Ho un titolo del genere:
    Piove, Aiuto!!!
    mi da'
    piove--aiuto---
    mentre io vorrei
    piove-aiuto
    Si puo' fare?
    Ho visto cose...

  7. #7
    Prima elimini tutti gli spazi e poi esegui le sostituzioni.

    Oppure con una regex sostituisci le parto dove c'č pių di un trattino con uno solo.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick č mircov e non mirco!!!

  8. #8
    Originariamente inviato da mircov
    Prima elimini tutti gli spazi e poi esegui le sostituzioni.
    Questo giā c'č l'ho
    L'ho posto, cosė qualcosina la dō pure io
    Codice PHP:
    function makeUrlFriendly($input) {
       
    // Sostituiamo gli spazi con i trattini
       
    $output preg_replace("/\s/" "-" $input);  
       
    // Togliere tutti i caratteri che non siano lettere
       
    $output preg_replace("/\W/" "-" $output);
       
    // Sostituiamo le lettere MAIUSCOLE con le minuscole
       
    $output strtolower($output);
       return 
    $output;
       }
    // fine della funzione
    $frendly_url makeUrlFriendly($output); 
    Originariamente inviato da mircov
    sostituisci le parto dove c'č pių di un trattino con uno solo.
    Come devo fare?

    p.s. !!Attenzione!! prima di "\s/" e "\W/" bisogna mettere un "/", ho provato varie volte a metterlo ma non lo segna, bho!
    Ho visto cose...

  9. #9
    nella tua funzione aggiungi un + a \W, quindi \W+, e dovrebbe metterti un solo trattino. E togli la prima preg che \W dovrebbe pulire tutto...

    p.s. tra i tag php][/php] devi raddoppiare gli escape per visualizzarli.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  10. #10
    preg_replace accetta anche array (sul manuale vengono chiamate matrici indicizzate).

    Quindi puoi anche fare in questo modo:
    Codice PHP:
    $replace[] = '/(\w+)/' ;
    $replacer[] = '-' ;
    $replace[] = '/(\s+)/' ;
    $replacer[] = '-' ;

    $input preg_replace$replace $replacer $input ) ; 
    Provalo e fammi sapere se funziona! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick č mircov e non mirco!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.