Ho un problema con un'applicazione che sto creando.
Di per se l'applicazione è relativamente semplice, si tratta di un programma che scrive un feed rss ma quando arrivo alla formazione degli item mi si crea un grosso problema, la stringa immette caratteri particolari che non riesco a togliere.
Praticamente si tratta di leggere dei file di testo formattati in utf-8, prendere questi file, leggerli e scansionarli una riga alla volta. Facile fino a qui!
Codice PHP:
$nota = file('nota-1.txt');
La prima riga è anche il nome della notizia e prima di inserirla nell'item la formatto per togliere gli a capo:
Codice PHP:
$titolo = rtrim(strip_tags($nota[0]), "\x00..\x1F");
Quindi concateno le stringhe in modo da formare una stringa in formato xml da passare al costruttore, in questo semplice modo:
Codice PHP:
$itemNode .= utf8_encode("<item><title>$titolo</title><link>$link</link><description>$descrizione</description><author>marco@stilisticamente.biz</author><pubDate>Sat, 19 Dec 2009 00:00:01 GMT</pubDate></item>");
La stringa è in realtà all'interno di un ciclo che itera tutti i files di note presenti all'interno di una data cartella, fin qui va tutto abbastanza bene, ma quando vado a leggere la stringa con una echo per una verifica di quanto inserito noto i soliti caratteri di errata codifica utf-8, ma quel che non capisco è che questi caratteri non si trovano all'interno del testo, per esempio sulle accentate che invece vengono rese bene, ma all'inizio della frase.
Purtroppo se elimino l'encode il dom interpretando la stringa mi da come errore proprio che la stringa non è propriamente codificata utf-8, se lo metto lo interpreta ma mi da un altro messaggio di errore: Extra content at the end of the document in Entity alla riga che carica la stringa
Codice PHP:
$rss->loadXML($itemNode);
In pratica si riferisce ad un fastidioso
che viene inserito in modo automatico alla fine della stringa e che non riesco ad eliminare.
Se infine invece di usare loadXML() provo ad usare load() non mi da più errori, procede fino alla fine ma mi crea un file con la sola intestazione:
codice:
<?xml version="1.0" encoding="utf-8"?>
e basta, cancellando tutto il resto, e io non so più che fare 
PS ho provato anche a formattare i file di testo in utf-8 senza bom, ma nulla stessi errori nel testo.