Salve,

qualcuno mi saprebbe spiegare dove sbaglio? Voglio infatti sostituire dei segni particolari di uno string con "_", Per es. in un Uploader in cui lo user carica un file, nel mio caso specifico si tratta di un sistema Mac OS X, si vuole evitare l'uso di segni particolari. Tipo un File del genere: myfile/../...jpg

Ora pur avendo tutto settato in UTF-8, DB, Editor ed header (charset), preg_replace() ma anche str_replace() continuano ad ignorare i segni particolari come pure le Umlaute, faccio un esempio:

Codice PHP:
$str "Müller"// variabile viene inviata quale parametro in una funzione 
Codice PHP:
echo preg_replace('/\[^\pL]/u''_'$str ); // Visualizza erroneamente: Müller formato UTF-8 
Codice PHP:
echo utf8_encode(preg_replace('/\[^\pL]/u''_'utf8_decode($str) )); // Visualizza erroneamente: M?ller formato ASCII 

Entrambi gli esempi non danno i risultati da me sperati. L'unico caso in cui preg_replace() funziona, è quando lo string lo inserisco manualmente hardcoded direttamente nella funzione:
Codice PHP:
echo preg_replace('/\[^\pL]/u''_''Müller' ); // Visualizza correttamente: M_ller 

Devo forse settare qualcosa in php.ini? Questi sono i parametri settati:

codice HTML:
Multibyte Support     enabled
Multibyte string engine     libmbfl
HTTP input encoding translation     disabled
libmbfl version     1.3.2 
Multibyte (japanese) regex support     enabled
Multibyte regex (oniguruma) backtrack check     On
Multibyte regex (oniguruma) version     4.7.1
Directive    Local Value    Master Value
mbstring.detect_order    no value    no value
mbstring.encoding_translation    Off    Off
mbstring.func_overload    0    0
mbstring.http_input    pass    pass
mbstring.http_output    pass    pass
mbstring.http_output_conv_mimetypes    ^(text/|application/xhtml\+xml)    ^(text/|application/xhtml\+xml)
mbstring.internal_encoding    no value    no value
mbstring.language    neutral    neutral
mbstring.strict_detection    Off    Off
mbstring.substitute_character    no value    no value