Newsgroup: it.comp.www.php
Titolo: problema con htmlentities

Salve,
ho php 5.2.3 su windows vista, funziona a meraviglia ma mi trovo ad 
affrontare un problema che non riesco a risolvere.
Ho scritto una classe Upload in un file upload.php, che contiene anche 
svariate funzioni che gestiscono questa classe e permettono l'upload di file 
e la gestione dei file in una determinata cartella a chi importa e utilizza 
upload.php.
upload.php è più o meno così:
----------------------------------------------------------
class Upload {
    ...
    dichiarazione della classe
    ...
}
function Upl_alert($msg, $is_red=true) {
 echo('<p class="'.($is_red?'upl_red_alert':'upl_green_alert').'">' .
htmlentities($msg) . '</p>');
}
...
altre funzioni
...
function Upl_print_list() {
 global $upload;
 $dirname=Upl_getdirname($upload->basedir);
 $files=GetFileList();
 $tot_files=count($files);
 /**
  * NO FILES: just alert and exit
  */
 if ($tot_files==0) {
  Upl_alert('La cartella '.$dirname.' è vuota.', false);
  return;
 }
...
other instructions here
...
}
----------------------------------------------------------
Ora, dal file xxx.php io chiamo la funzione Upl_alert() e la funzione 
Upl_print_list(), la quale a sua volta richiama Upl_alert() in caso la 
directory di destinazione per l'upload sia vuota.
Il messaggio contiene una e accentata: 'è'.
La cosa che non riesco a capire è che se richiamo la funzione Upl_alert() 
direttamente mi stampa la stringa correttamente, mentre quando richiamo 
Upl_print_list(), la stringa non viene stampata correttamente.
Sembra che htmlentities lavori bene solo quando la funzione Upl_alert() è 
richiamata direttamente.
La stringa che voglio stampare è:
'La cartella '.$dirname.' è vuota.'
Ma quando Upl_print_list() tenta di stamparla, ciò che leggo è:
'La cartella backupfiles Ã¨ vuota.'.
in xxx.php ho queste istruzioni:
----------------------------------------
$msg='La cartella backupfiles è vuota';
// this makes the same call I make below, but doesn't work
Upl_print_list();
// why this works fine and the previous don't?
Upl_alert($msg);
----------------------------------------
e i risultati sono:
-----------------------------------------
La cartella backupfiles Ã¨ vuota.  // xxx.php chiama Upl_print_list() che a 
sua volta chiama Upl_Alert()
La cartella backupfiles è vuota // xxx.php chiama direttamente Upl_alert()
-----------------------------------------
Ora, sinceramente una cosa del genere non mi è mai capitat in 7 anni che 
lavoro con php.
Non riesco a venirne fuori. Ho anche provato a rifare le stesse funzioni in 
altri file e funzionano bene!
Ho validato xxx.php e il validatore del 
w3.org
 mi dice che è valid xhtml 
1.0.
Non ho problemi di javascript ne altri problemi con css, anch'essi validi.
Ho provato a codificare la pagina in iso, utf-8, ma niente...
Idee?
Grazie mille in anticipo, Fabrizio
sfa...@zeovolt.com

 funzione Upl_alert() è richiamata direttamente.
Questo e` abbastanza strano.
Comunque in htmlentities puoi specificare il charset della stringa di 
origine.
Se tu scrivi la stringa con un editor utf-8 e non specifichi il charset, 
la htmlentities() presume che sia iso-8859-1 e te lo scrive sbagliato.
 
Quindi devi controllare che charset usa l'editor, non la pagina. O meglio: 
devi uniformare tutto allo stesso charset: editor, funzioni di 
elaborazione stringhe in PHP, database, ecc.
Bye.

 wrote in message 
news:5pime7F...@mid.individual.net...


 wrote in message 
news:4733af84$0$36443$4faf...@reader5.news.tin.it...
