Cerca nel blog

Pubblicità

banner-125x125 banner-125x125 banner-125x125banner-125x125

Feed RSS e Newsletter

Puoi seguire il mio blog abbonandoti al feed RSS, se non sai cos'è un feed RSS prova a guardare questo video... Spiega tutto!

Icona Feed RSS

Twitter

PayPal

Se ti piace questo blog puoi pensare ad una donazione.

Tutti i fondi ricevuti saranno utilizzati per il mio sollazzo personale. :-)

Ultimi commenti...

Napolux: @ Meteo diretta: Lo venderanno caro immagino

Meteo diretta: venderanno il loro dominio? :P

Dario Salvelli: Forse la colpa è di Six Apart? ;)

Napolux: @ Dario Salvelli: Beh, per i tempi era un sistema molto avanzato. Ovviamente poi non è riuscito a...

Dario Salvelli: “Davvero ben fatto” mi sembra esagerato, io l’ultima volta che ci ho messo piede...

Maiuscole accentate in PHP

lunedì 16 marzo 2009
1 Star2 Stars3 Stars4 Stars5 Stars Vota!
Loading ... Loading ...

La funzione strtoupper() di PHP trasforma la stringa passata come parametro nella sua versione maiuscola.

// Stampa CASA
echo strtoupper("casa");

A noi italiani, come al solito, piace “distinguerci” e utilizziamo sovente lettere accentate. Putroppo strtoupper() non trasforma le lettere accentate lasciandole minuscole:

// Stampa FELICITà
echo strtoupper("felicità");

Come ovviare? Con una semplice funzione custom, che mi è stata molto utile recentemente:

function maiuscolo($stringa)
{
	$accentate = array("à","è","é","ì","ò","ù");
	$sostituzioni = array("A'","E'","E'","I'","O'","U'");
	return strtoupper(str_replace($accentate,$sostituzioni,$stringa));
}
// Stampa FELICITA'
echo maiuscolo("felicità");
Ho preferito la versione A' piuttosto che À visto che è comunque la più usata, nonostante non sia poi così corretta. La funzione è facilmente modificabile per usare i caratteri maiuscoli accentati.

Si accettano versioni più “carine”. Inviatemele per posta o fate un post sul vostro blog! :)

Questo articolo è stato pubblicato lunedì, 16 marzo 2009 alle ore 08:47 Se non vuoi perdere nemmeno un articolo del mio blog abbonati al feed RSS. Se non sai cos'è un feed RSS puoi guardare questo video, spiega tutto!

In alternativa puoi abbonarti alla newsletter, riceverai un'email ogni volta che verrà pubblicato un nuovo post. Il tuo indirizzo email sarà gestito da Feedburner.

  

12 Commenti a “Maiuscole accentate in PHP”

  1. unwiredbrain scrive:

    Se si tratta solo di comportamento “visuale” sarebbe stato più semplice tramite CSS:
    text-transform: uppercase;

    Altrimenti dai un’occhiata a questo: http://it.php.net/manual/en/function.strtoupper.php#82592 ;)

  2. Asterisco scrive:

    Ovviamente dipende dalle necessità, ma anche io come unwiredbrain ci sarei andato giù di regoletta css.

  3. Napolux scrive:

    @ Asterisco:
    Ovvio. Ma non si vive di solo CSS :P

  4. Asterisco scrive:

    In ogni caso, supponendo di dover andare a stampare a video la stringa, io il vettore $sostituzioni l’avrei riempito con le corrispettive entità html. Ovviamente la soluzione che viene proposta nel link di unwiredbrain la trovo molto più elegante di qualsiasi cosa possa venirmi in mente.

  5. Napolux scrive:

    @ Asterisco:
    :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:

  6. unwiredbrain scrive:

    Non ho idea di come possa realizzarsi in PHP, ma un’alternativa sarebbe:
    1. ottenere il numero di entità esadecimale (UTF-16!) di ogni singolo carattere (chiamiamolo “h” per comodità);
    2. controllare che sia compreso fra 0xE0 e 0xFF (inclusi)
    3. in caso positivo ritornare il carattere di entità esadecimale pari a “h” ridotta di 0x20

    L’unico inconveniente è rappresentato dal carattere 0xF7 (“÷”), il cui “maiuscolo” sarebbe rappresentato da “×” ;)

    Tra l’altro, manipolare direttamente le entità esadecimali è molto conveniente, dal momento che per utilizzare poi i caratteri in maniera “sicura” basta riconvertire in decimale l’entità esadecimale e piazzarla in mezzo a &# e ;

  7. Napolux scrive:

    @ unwiredbrain:
    Interessante, ma un filino complicato :D

  8. unwiredbrain scrive:

    @ Napolux:
    Vero! ;)

    La cosa però mi stuzzicava parecchio, non potevo credere che davvero non esistesse alternativa, così girovagando per la documentazione di PHP ho trovato questo: http://it.php.net/manual/en/function.mb-convert-case.php

    L’utilizzo è di una semplicità disarmante:
    mb_convert_case("aeiou áàéèíìóòúù", MB_CASE_UPPER, 'utf-8')

    Occhio: l’encoding deve essere utf-8!

    Altre costanti utili: http://it.php.net/manual/en/mbstring.constants.php

    Per quanto riguarda JavaScript, buone notizie: "aeiou áàéèíìóòúù".toUpperCase() restituisce AEIOU ÁÀÉÈÍÌÓÒÚÙ :)

  9. RSS Week #47: articoli interessanti che ho trascurato - Matteo Moro scrive:

    [...] Maiuscole accentate in PHP [...]

  10. unwiredbrain scrive:

    Napolux, ma alla fine ti è tornata utile mb_convert_case?

    No, perché in realtà mi sono reso conto che avresti fatto prima con mb_strtoupper :mrgreen:

    Secondo me comunque l’intera estensione mbstring risulta estremamente utile; in particolar modo, trovo comodissimo il fatto che permetta di effettuare l’overloading di tutta una serie di funzioni molto comuni, come ad esempio strtoupper, strtolower, mail, ereg, ecc.

    Per mettere in atto l’overloading, basta settare correttamente le direttive mbstring.func_overload (all’interno di php.ini!) e mbstring.internal_encoding. Credo che più semplice di così, davvero, non si possa… :)

    NB: io sto scoprendo tutto ciò solo adesso, pertanto chiedo scusa a tutti anticipatamente nel caso in cui stia parlando di cose trite e ritrite.

  11. Napolux scrive:

    @ unwiredbrain:
    Alla fine la soluzione più semplice è sempre il text-transform CSS :)

  12. unwiredbrain scrive:

    Sbaglio o qualcuno diceva che «non si vive di solo CSS»? :mrgreen: :-P