Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Prima lettera dopo il punto in maiuscolo

    Sto provando tra ucfirst, ucwords ecc ma dopo un punto non riesco a far uscire la lettera in maiuscolo.
    Sapete dirmi come devo fare?
    Mai dire Mai

  2. #2
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    potresti provare ad esplodere il testo sul punto e settare la prima lettera in maiuscolo di ogni frase

    Codice PHP:
    $sep ".";
    $vett explode($sep,$text);
    $ret "";
    foreach(
    $vett as $el) {
      
    $el trim($el);
      
    $el ucfirst($el);

      
    $ret .= $el " ";
    }

    echo 
    $ret
    non l'ho provata quindi non so
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  3. #3
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Non sono un esperto di espressioni regolari, ma sono certo che siano la strada giusta per questo problema.
    Lo uppo anche se non ho una soluzione perchè penso che sia interessante per tutti.

  4. #4
    Utente di HTML.it L'avatar di elilo
    Registrato dal
    Aug 2007
    Messaggi
    149
    anche io avevo pensato alle espressioni regolari..solo ce non sono mai riuscito a farmele entrare in testa (e le ho anche studiate all'uni )

    cmq credo che con un preg_match andresti a cercare il punto lo spazio e la lettera che segue..che in fondo è la stessa cosa ma forse è un pò più bella
    "Se in un primo momento
    l'idea non è assurda,
    allora non c'è nessuna speranza
    che si realizzi."
    - Albert Einstein -

  5. #5
    Espressione regolare per rilevare il primo carattere minuscolo dopo un punto:
    codice:
    \.\s*[a-z]
    Usando preg_replace_callback() si può sostituire a risultati trovati dall'espressione regolare, l'esecuzione di una funzione:

    Codice PHP:
    $stringa="lorem ipsum dolor sit amet. consectetuer adipiscing elit. sed diam nonummy. nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.";

    print 
    preg_replace_callback('/\\.\\s*[a-z]/'create_function('$matches','return strtoupper($matches[0]);'), $stringa); 
    Per trasformare in maiuscola anche la prima lettera della stringa, è sufficiente modificare l'estpressione regolare aggiungendo con un or anche questa seconda casistica:

    Codice PHP:
    $stringa="lorem ipsum dolor sit amet. consectetuer adipiscing elit. sed diam nonummy. nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.";

    print 
    preg_replace_callback('/\\.\\s*[a-z]|^\\s*[a-z]/'create_function('$matches','return strtoupper($matches[0]);'), $stringa); 
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  6. #6
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Meraviglioso e chiarissimo!
    Grazie mille!

  7. #7
    Incollando ed inviando il codice erano rimasti tagliati alcuni \
    Ho editato, dovrebbe essere a posto ora
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  8. #8
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    @magicale

    un piccolo chiarimento per chi come me non capisce nulla di regexp(non ho la possibilità di fare prove adesso):

    strtoupper($matches[0])

    esegue l'operazione su tutte le occorrenze o solo sulla prima che trova?

  9. #9
    Su tutte. $matches[0] si riferisce alla corrispondenza del pattern completo.
    ($matches[1],$matches[2],..$matches[n] fanno invece riferimento al primo, secondo,..n-esimo sotto-pattern, ovvero porzioni dell'espressione regolare racchiuse tra due parentesi tonde)

    E' come se fosse un preg_replace, in cui ad ogni occorrenza di un pattern sostituisci ad esempio un testo. Qui ogni occorrenza viene sostituita con l'esecuzione della funzione.
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

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.