Newsgroup: it.comp.www.php
Titolo: feed rss e impazzimento con tabella codici

Ciao a tutti,
Ho un problema che mi sta facendo discretamente impazzire...
Devo generare un feed RSS da una serie di tabelle contenenti dati con
tabelle codici le più varie.. quindi: accentate a gogo, in spagnolo,
inglese, etc.
Inizialmente il feed dava errore alla prima accentata spuria che
trovava. Uso 
http://www.ajaxray.com/blog/2008/03/08/php-universal-feed-generator-supports-rss-10-rss-20-and-atom/
Ho provato a scrivere una procedura che trasforma da Ascii a hex,
controlla se c'e' e se si trasforma questo in entità html, ma non mi
funziona (il codice, in fondo). Cosi' ho scritto qwuesto codicino che
alemeno mi fa visualizzare il feed, ma
c'e' un problema: se scrive &agrave; visualizza esattamente &agrave;
    	// Workaround ****************************************
    	$titolo = str_replace("à", "a'", $row['titolo']);
Questa è la procedura che, ovviamente, non funziona.... Qualche anima
pia mi sa suggerire un qualcosa? Grazie mille!
   while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
    	// Escape neutralizzante delle accentate
    	// Controlla se c'e' un Ascii > 127
    	$titolo = $row['titolo'];
	    $strl = strlen($titolo);
	    for ($i = 0;$i < $strl; $i++)
	    {
	        $char = '0x' . bin2hex(substr($titolo,$i,1));
	        $pos = in_array($char,$arr);
	        if ($pos == 1)
	        {
	        	// Neutralizza carattere Ascii>127 trasformandolo in Html
	        	// Esempio: 0xe0 diventa .....
                                // Ma come??????????
	            $titolo = str_replace($char, ' ', $titolo);
	        }
	    }
   	}

 wrote:
Scusate nel messaggio precedente manca l'array delle hex
   	$arr = array(
	"0x80","0x81","0x82","0x83","0x84","0x85","0x86","0x87","0x88","0x89","0x8A","0x8B","0x8C","0x8D","0x8E","0x8F",
	"0x90","0x91","0x92","0x93","0x94","0x95","0x96","0x97","0x98","0x99","0x9A","0x9B","0x9C","0x9D","0x9E","0x9F",
	"0xA0","0xA1","0xA2","0xA3","0xA4","0xA5","0xA6","0xA7","0xA8","0xA9","0xAA","0xAB","0xAC","0xAD","0xAE","0xAF",
	"0xB0","0xB1","0xB2","0xB3","0xB4","0xB5","0xB6","0xB7","0xB8","0xB9","0xBA","0xBB","0xBC","0xBD","0xBE","0xBF",
	"0xC0","0xC1","0xC2","0xC3","0xC4","0xC5","0xC6","0xC7","0xC8","0xC9","0xCA","0xCB","0xCC","0xCD","0xCE","0xCF",
	"0xD0","0xD1","0xD2","0xD3","0xD4","0xD5","0xD6","0xD7","0xD8","0xD9","0xDA","0xDB","0xDC","0xDD","0xDE","0xDF",
	"0xE0","0xE1","0xE2","0xE3","0xE4","0xE5","0xE6","0xE7","0xE8","0xE9","0xEA","0xEB","0xEC","0xED","0xEE","0xEF",
	"0xF0","0xF1","0xF2","0xF3","0xF4","0xF5","0xF6","0xF7","0xF8","0xF9","0xFA","0xFB","0xFC","0xFD","0xFE","0xFF"
	);
Inoltre, la riga di codice che ho messo non è quella a cui fa
riferimento la frase... e i problemi in effetti sono 3.
La "versione" corretta (con le domande....cablate....) è:
    	// Workaround ****************************************
       	// Problema1: se scrive &agrave; visualizza esattamente
&agrave;
       	// problema2: invece dell'accentata, nel codice dovrei
scrivere il codice (ascii, hex, etc.)
       	// problema3: a str_replace posso passare un array (altrimenti
devo fare str_replace per ogni accentata)
                   $titolo = str_replace("à", "&agrave;'",
$row['titolo']);
grazie
Luk

     	str_replace("à", "a'", $row['titolo']);
str_replace non lavora su UTF-8. :)
Unifica tutto a UTF-8 e non dovresti avere piu` problemi.
Ah, ho gia` detto UTF-8? :)
Bye.

 Bye.
Ciao :)
Grazie. Eh si, ho gia' provato. Pero' anche mettendo tutto in utf-8
non funge lo stesso, continua a scrivere & amp a grave ;
Pero' leggendo in giro ho scoperto che l'Xml, come formato supporta
solamente 5 entita' html.
Comunque pare che sia riuscito a risolvere "semplicemente" mettendo
CDATA anche nel titolo :-/
Pero' il modo di "escapare" le accentate e renderle digeribili al feed
ancora non l'ho trovato.................
Luk

 ancora non l'ho trovato.................
E` quello il punto: non le devi escapare in nessun modo, se sono UTF-8. :)
Bye.