Newsgroup: it.comp.www.php
Titolo: Togliere le accentate

Ciao a tutti. Sto ricavando i dati inserendoli in una variabile da un Form
in "POST" con una textarea. Tutto funziona regolarmente, i dati vengono
messi nella variabile $messaggio e poi elaborati. Ma vorrei fare in modo che
tutte le lettere accentate vengano trasformate in non accentate seguite da
un apostrofo, per essere conforme allo standard ASCII puro.
Faccio un semplice esempio: se la variabile $messaggio contenesse "perchè
secondo voi dico che è una bella giornata?", vorrei che una semplice
funzione mi tramutasse l'output in "perche' secondo voi dico che e' una
bella giornata?"
Come potrei fare ragazzi? Mi affido alla vostra conoscenza in argomento.
Grazie ;)
Matteo

 per essere conforme allo standard ASCII puro.  
IMHO e' un po' inutile, comunque:
http://groups.google.it/groups?hl=it&lr=&ie=UTF-8&threadm=WsY6c.79279%24
Kc3.2537595%
40twister2.libero.it
&rnum=1&prev=/groups%3Fhl%3Dit%26lr%3D%2
6ie%3DUTF-8%26q%3Dauthor%253Asetec%
40_no_nospam_freemail.it
%2Bsafe_filen
ame [ 
http://url.repository.biz/go/4P
 ]
-- 
I am what I am, I do what I can
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Cerchi un programmatore PHP/MySQL? 
http://url.repository.biz/go/1Y
L'uomo, conscio di sbagliare, persevera.


invece che impazzire con gli accenti usa HTMLentities che ti porta 
comunque ad ASCII puro ed è bell'e'che pronta...
-- 
Fabrizio "Hermooz" Ermini

Dopo lunghe ricerche ho alla fine risolto con:
$vocali = array("a'", "e'", "i", "o", "u");
$accentate = array("à", "è", "ì", "ò", "ù");
$messaggio = str_replace($accentate, $vocali, $messaggio);
Ciao a tutti!

Matteo wrote:

'perché' si scrive con l'accento acuto, quindi il tuo esempio
"perchè secondo voi dico .."
scritto senza errori d'ortografia (con 'perché' al posto di 'perchè'), 
non verrebbe valutato come ti potresti aspettare.
In caso di maiuscole come ti comporteresti?
-- 
Spoken: How much is that gorilla in the window?
Take our advice, At any price, A gorilla like Magilla is mighty nice.
Gorilla, Magilla Gorilla for sale

 In caso di maiuscole come ti comporteresti?
Voler essere eccessivamente pignoli e vedere l'orientamento dell'accento fa
passare per persone alquanto antipatiche sai? Ti chiedo scusa se i miei
errori di ortografia ti hanno abbagliato impedendoti di valutare la mia
gentile richiesta. In caso di maiuscole basterebbe inserire anche queste
nelle casistiche del metodo.
A presto.

 gentile richiesta.
Dài Matteo, non prenderla male, non credo ci fosse l'intenzione di
offenderti, quanto quella di farti osservare che all'appello mancavano
due vocali: "é" e "ó". Le possibilità di accentazione sono 7, non 5, e
se ci aggiungi le maiuscole (gravi e acute) il numero raddoppia.
Ma voglio sollevare un ulteriore obiezione (a scopo costruttivo,
naturalmente).
Anche ammettendo che nella textarea venga immesso unicamente del testo
italiano, sappiamo bene che nella nostra lingua sono apparsi (e stanno
aumentando a dismisura) vocaboli di origine straniera. Ormai, per dirne
una, "crème caramel" appartiene al nostro idioma quasi fosse italiano
vero e proprio. 
Io non so quale uso tu debba fare di quelle sostituzioni, ma se fosse
(ad esempio) per un sito di annunci compro/vendo/cerco-lavoro/etc.,
personalmente troverei imbarazzante scrivere il mio annuncio e
ritrovarmelo davanti così:
"La mia specialita' e' il cre'm caramel".
Senza contare che anche in italiano, seppur raramente ma a scanso di
equivoci, è bene usare l'accento (ad esempio sul verbo "dare", come ho
fatto all'inizio di questo post, oppure in un contesto dove "àncora" può
confondersi con "ancóra"). Immaginati di vedere "da'i", "da'nno",
"a'ncora", "anco'ra", etc... non è molto carino, ti pare?
Tutto questo per dirti che condivido l'opinione di Hermooz: visto che il
php lo consente, fai in modo che le accentate rimangano accentate, e
fine dei problemi.
Ciao! :-) 
-- 
Nicoletta

 fine dei problemi.
Nicoletta, mi serve fare ciň per la formattazione degli sms prima
dell'invio. Il sistema che utilizzo non prevede che vengano riconosciute
lettere accentate ma solo standard ASCII, quindi sono costretto ad emulare
le accentate con gli apostrofi. Ovviamente in un sms, data la brevitŕ del
testo, le parole straniere non andranno accentate e le parole italiane,
sicuramente rimarranno allo stato originale, data oltre tutto la
scorrettezza nell'accentare parole che non necessitano d'accenti solo per
giustificarne alcuni fonemi.
Chiedo perdono per avervi importunato con una domanda che ai vostri occhi
probabilmente č sembrata banale, ma a cui nessuno ha dato risposta se non
una poco costruittiva polemica sulla differenza irrilevante tra "perchč" e
"perché".
Grazie lo stesso.

 
Pensavo che l'abbagliato fossi tu e ti volevo mettere in guardia 
dall'utilizzo di questo codice per l'uso che devi fare:
 >$vocali = array("a'", "e'", "i", "o", "u");
 >$accentate = array("à", "è", "ì", "ò", "ù");
 >$messaggio = str_replace($accentate, $vocali, $messaggio);
È un pò pochino, non trovi?
 >In caso di maiuscole basterebbe inserire anche queste
 > nelle casistiche del metodo.
Bhé, dal tuo codice si direbbe che non le avevi valutate. Dovresti 
ringraziarmi, ma oltre che illetterato ti dimostri pure villano.
Vedi tu a volere fare del bene...
 >
 > A presto.
 >
Oddio, spero di no, Matteo. O cambi atteggiamento o spero proprio di no.


 "perché".
Irrilevante 'na ceppa, la tua soluzione faceva acqua.
Tsk


 Vedi tu a volere fare del bene...
Villano? Non mi pare di averti insultato o di avere sminuito la tua persona
o il tuo operato... se i tuoi post sono polemici però non puoi che
aspettarti risposte sullo stesso registro, non trovi? Ti ringrazio comunque
per il tempo perso nel rispondere alla mia richiesta di informazioni.

 per il tempo perso nel rispondere alla mia richiesta di informazioni.
Prego


dell'invio.
Allora ti conviene usare preg_replace.
Parti da un vettore con tutte le accentate (al limite, 10 :-))
Ci aggiungi le versioni maiuscole
Ognuna di queste versioni la sdoppi:
	č\b	=> e'		// a fine di parola, diventa e'
	č(\w)	=> e\1		// a mezzo di parola, diventa e
eccetera eccetera.
Per dire...
        $keys   = array();
        $vowels = array('a', 'e', 'i', 'o', 'u');
        foreach($vowels as $vowel)
        {
                for ($i=0; $i < 2; $i++)
                {
                        $key    = html_entity_decode("&{$vowel}acute;");
                        $keys[$key] = $vowel;
                        $key    = html_entity_decode("&{$vowel}grave;");
                        $keys[$key] = $vowel;
                        $vowel  = strtoupper($vowel);
                }
        }
        $froms  = array();
        $repls  = array();
	// "Déshabillé" deve diventare "Deshabille'"
        foreach($keys as $from => $repl)
        {
                $froms[] = "/{$from}\\B/";      $repls[] = "$repl'";
                $froms[] = "/{$from}\\b/";      $repls[] = "$repl";
        }
        $text = preg_replace($froms, $repls, $text_orig);
Leonardo che non ha provato (ho dubbi su \\B e \\b)
-- 
Avere studiato senza mettere in pratica e' inutile;
mettere in pratica senza avere studiato e' pericoloso.
                                                - Conphpucio