Discussione:
upcase di caratteri accentati
(troppo vecchio per rispondere)
Azathoth
2007-04-17 13:07:48 UTC
Permalink
Avrei estrema necessità di portare in maiuscolo del testo, il problema
sorge nel caso in cui il testo contenga dei caratteri accentati.

ad esempio se faccio una strtoupper di "provò" il risultato è PROVò

C'è una funzione di conversione o un truco per risolvere questa rogna?

Devo per forza fare qualcosa tipo questo?:

$minuscole = array("ò", "à", "ù", "è", "ì", "é");
$maiuscole = array("Ò", "À", "Ù", "È", "Ì", "É");

str_replace($minuscole, $maiuscole, $frase);
Azathoth
2007-04-17 13:11:44 UTC
Permalink
[EDIT]
fare uno string replace di questo tipo può dare problemi? Il server e
mysql lavorano in UTF8
Alessandro Pellizzari
2007-04-17 13:37:16 UTC
Permalink
Post by Azathoth
Avrei estrema necessità di portare in maiuscolo del testo, il problema
sorge nel caso in cui il testo contenga dei caratteri accentati.
Devi usare le multibyte functions: mb_strtoupper

http://it.php.net/manual/en/function.mb-strtoupper.php

Non ho mai provato, ma dovrebbero fare al caso tuo.

Bye.
Azathoth
2007-04-17 14:06:29 UTC
Permalink
Ti ringrazio, inizialmente ho usato

function my_strtoupper($phrase){
$minuscole = array("ò", "à", "ù", "è", "ì", "é");
$maiuscole = array("Ò", "À", "Ù", "È", "Ì", "É");

return str_replace($minuscole, $maiuscole, strtoupper($phrase));
}

che ho poi sostituito con

function my_strtoupper($phrase){
return mb_strtoupper($phrase, "utf-8");
}

il comportamento sembra del tutto identico e comunque è quello che fa
al caso mio. Ovviamente mb_strtoupper è sicuramente più ottimizzata e
prevede tutta la serie di caratteri strambi (umblaut etc) che io ho
escluso.

Loading...