anomalia strtoupper

Ciao a tutti,

non capisco cosa stia succedendo ieri utilizzavo uno script che prendeva delle localit e le convertiva in maiuscolo.

Sebbene non abbia modificato ninete lo script non funziona pi.

Questo il problema: le lettere accentate

$str="pi";

$str_g=strtoupper($str);

echo $str_g;

echo "$str_g" dovrebbe essere PIU' invece mi da PI

perch??

Se ieri funzionava oggi cosa c' che non va?

come posso risolvere?

inviato 9 anni fa
stellina
X 0 X

risolto con mb_strtoupper($str); :D

mah ???

risposto 9 anni fa
stellina
X 0 X

Veramente funziona ancora, che non esiste maiuscola e U' sono 2 caratteri non 1 convertito in maiuscola.

Dire che proprio non esiste scorretto, diciamo che non standard.

Fai un controllo prima di strtoupper e sostituisci le accentate con queste:

  *  à
  *  è
  *  é
  *  ì
  *  ò
  *  ù
  *  À
  *  È
  *  É
  *  Ì
  *  Ò
  *  Ù
risposto 9 anni fa
LonelyWolf
X 0 X

allora non sarebbe meglio htmlentities() ?

comunque non credo intendesse quello

risposto 9 anni fa
Xscratch
X 0 X

allora non sarebbe meglio htmlentities() ?

comunque non credo intendesse quello

No, htmlentities sostituisce un carattere con l'equvalente entit in html, ledi doveva renderlo maiuscolo.

Cmq ha risolto.

risposto 9 anni fa
LonelyWolf
X 0 X

si,appunto... io suggerivo htmlentities al posto del controllo manuale prima di strtoupper che hai suggerito tu, che appunto era incentrato sulle accentate e non sulle maiuscole

risposto 9 anni fa
Xscratch
X 0 X

Comunque c' una certa differenza tra volere le lettere maiuscole e le entit html relative...

Dal manuale si deduce che strtoupper utilizza il "locale" corrente per classificare i caratteri e quindi convertirli in maiuscolo, mentre mb_strtoupper non considera le impostazioni del locale ma le deduce dal set di caratteri della stringa passatagli.

Quindi suppongo che impostando con setlocale() (LC_ALL o almeno LC_CTYPE) il corretto set di caratteri allora strtoupper dovrebbe funzionare.

:bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda