Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    Formattazione stringa UTF

    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.

  2. #2
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Mi rispondo da me, apparentemente ce l'ho fatta a formattare la riga in modo giusto, praticamente ho decodificata la stringa da utf-8 a... non lo so
    Codice PHP:
    $titolo utf8_decode(strip_tags($nota[0])); 
    senza usare l'rtrim per togliere i fine riga.
    Il
    alla fine veniva inserito da loadXML() e ora la stringa è formattata giusta, ma! Il file non viene formato lo stesso, forse il problema è altrove ora.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.