Originariamente inviato da daniele_dll
in generale, se non hai necessità particolari, non hai bisogno delle mb.
Considera che le normali funzioni non è che non lavorano, funzionano perfettamente, ma ovviamente bisogna usarle con attenzione. E normale che se lanci un strtolower, ucfirst, ucwords, strtoupper e simili incenerisci nel modo più totale tutto, ma se fai attenzione a quello che usi, di norma, non hai necessità di usare quelle funzioni.
Io, sinceramente, mi sono fatto un set di classi raggruppate sotto un elemento parent che ho chiamato I18N (come si chiamano di norma queste funzioni) che mi sfrutta le funzioni disponibili di php per fare le operazioni, per fare un esempio su strtoupper:
- se c'è usa mb_strtoupper
- alternativamente usa le iconv (per le funzioni disponibili)
- in estremis usa un bell'utf8_decode e poi re-encoda che è una soluzione ASSOLUTAMENTE orrenda ma è l'ultima disponibile
In realtà ho iniziato a lavoricchiare su un set di funzioni che supportano l'utf8 e mimano il funzionamento delle mb cosi da usarle se ci sono o, in caso di mancanza, sfruttare il proprio sistema di riconoscimento degli UTF8. Riconoscere un carattere utf8 è abbastanza semplice: se N bit sono 1 vuol dire che quel byte non è un carattere ma è un pezzo di un carattere e cosi via dicendo fino a 4 byte. Con questo semplice giochino si evita di distruggere il tutto.