Visualizzazione risultati 1 fino 5 di 5

Discussione: Caratteri utf8 in caratteri semplici con preg_replace

  1. #1
    Guest

    Predefinito Caratteri utf8 in caratteri semplici con preg_replace

    Volevo sapere se era possibile, tramite l'"eval" nelle espressioni regolari, trasformare automaticamente caratteri utf8 in caratteri semplici. Per esempio, la è in e, la à in a e così via.
    Con:
    Codice:
    preg_replace('/[\x80-\xFF]/', '?', Iñtërnâtiônàlizætiøn);
    trasformo i caratteri "non idonei" in ?, con questo risultato: I?t?rn?ti?n?liz?ti?n
    Ora, usando per esempio un codice simile (non funziona questo codice):
    Codice:
    preg_replace("/([\x80-\xFF])/e", "chr(0xC0|ord('\\1')>>6).chr(0x80|ord('\\1')&0x3F)", 'Iñtërnâtiônàlizætiøn');
    ottenga: Internalization

    Grazie dell'aiuto

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Ti conviene usare l'apposita funzione.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    Provando ad utilizzarla, ho lo stesso problema di iconv(). Mi vengono stampati i "codici" (non ricordo come si chiamino) del carattere: I�t�rn�ti�n�liz�ti�n, quindi non credo sia utile! Grazie comunque della risposta

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    La regexp che hai postato, trasforma i caratteri dalla codifica ISO-8859-1 a UTF-8.
    Infatti se provi a salvare il file in codifica ISO-8859-1 e con php imposti la codifica a UTF-8 i caratteri verranno visualizzati correttamente.

    Infatti la regexp opposta ( cioè da UTF-8 a ISO-8859-1 ) è: /([\xC2\xC3])([\x80-\xBF])/e e il replace: chr(ord('\\1')<<6&0xC0|ord('\\2')&0x3F)

    In poche parole, non fa quello che vorresti fare. E, personalmente, io non so come farlo in modo dinamico.
    Ultima modifica di javascripter : 11-01-2011 alle ore 15.44.57

  5. #5
    Guest

    Predefinito

    Ho risolto così:
    Codice:
    preg_replace('#[^a-zA-Z0-9]#', '', iconv('UTF-8', 'ASCII//TRANSLIT', 'Iñtërnâtiônàlizætiøn'))

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •