Site icon Ryadel

PHP - Come eliminare i caratteri non validi da un file o stringa XML in formato UTF-8

php-cgi.exe - The FastCGI process exited unexpectedly error and how to fix it

Ieri ho scritto due righe su un metodo PHP per eliminare l'header e il footer di un file XML.P7M firmato elettronicamente (a patto che sia in formato CAdES). Pur trattandosi di un metodo non particolarmente elegante, possiamo dire che svolge egregiamente il suo lavoro, consentendo di eliminare dal file in questione l'header e il footer contenenti le informazioni relative alla firma.

Oggi verserò un altro tributo alle funzioni "brutte ma (almeno) funzionanti" pubblicando anche la funzione che ho sviluppato a corredo della precedente per ripulire il contenuto del suddetto file da caratteri XML non validi, così da poter utilizzare la stringa risultante come parametro per la creazione di di un oggetto SimpleXML:

Il codice di cui sopra è fortemente basato sul contenuto di due risposte presenti sul sito StackOverflow, per la precisione questa e questa: riconoscimenti e ringraziamenti vanno pertanto ai rispettivi autori. Come è possibile vedere, si tratta di una regexp che elimina tutti i caratteri non UTF-8, seguita da un approccio iterativo char-by-char che elimina tutti i caratteri non considerati validi in un contenuto XML. Nello specifico, ho dovuto utilizzare entrambi gli approcci poiché i file XML che dovevo processare erano affetti da entrambi i problemi.

Come ho detto sopra, si tratta di un metodo piuttosto brutto a vedersi e altamente inefficiente, probabilmente persino più di quello pubblicato in precedenza... Ma nonostante questo si è rivelato perfettamente adatto allo scopo, motivo per cui - vista l'esigua quantità di tempo a disposizione - non mi sono fatto scrupoli a utilizzarlo, almeno come workaround temporaneo in attesa di tempi migliori.

A tal proposito, se a qualcuno venisse l'idea (e la voglia) di fare di meglio, accetterò volentieri il suo suggerimento.... Fino ad allora, direi che il "double-clawed hammer" del PHP ha colpito ancora!

PHP - Come eliminare i caratteri non validi da un file o stringa XML in formato UTF-8

Prometto solennemente di non usarlo più per un pò... :)

Exit mobile version