Ik heb een probleempje bij het inlezen van XML bestanden met PHP.
De XML bestanden bevaten html entities zoals in:
De code é in dit bestand staat voor de letter é
Wanneer ik het XML bestand laat laden wordt de é omgezet in vreemde tekens, zoals Sénders.
Ik weet dat de html code normaalgesproken omgezet kan worden met de functie html_entity_decode('Sénders'), dit geeft mij keurig de output Sénders.
Ik dacht het makkelijk op te lossen door dit:
te vervangen door:
helaas geeft dit meteen de melding:
Wat ook wel klopt, want het is eigenlijk geen correcte XML meer.
Na heel wat gegoogel kom ik er nog niet achter of er een manier is om de simplexml_load_file functie te vertellen dat hij de codes op de juiste manier om moet zetten.
Iemand enig idee hoe ik dit wel kan doen?
De XML bestanden bevaten html entities zoals in:
code:
1
| <ACHTERNAAM>Sénders</ACHTERNAAM> |
De code é in dit bestand staat voor de letter é
Wanneer ik het XML bestand laat laden wordt de é omgezet in vreemde tekens, zoals Sénders.
Ik weet dat de html code normaalgesproken omgezet kan worden met de functie html_entity_decode('Sénders'), dit geeft mij keurig de output Sénders.
Ik dacht het makkelijk op te lossen door dit:
code:
1
| simplexml_load_file('filename.xml') |
te vervangen door:
code:
1
| simplexml_load_string(html_entity_decode(file_get_contents('filename.xml'))) |
helaas geeft dit meteen de melding:
code:
1
2
3
| Warning: simplexml_load_string(): Entity: line 22: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE9 0x6E 0x64 0x65 in file.php on line 44 Warning: simplexml_load_string(): <ACHTERNAAM>STnders</ACHTERNAAM> in file.php on line 44 |
Wat ook wel klopt, want het is eigenlijk geen correcte XML meer.
Na heel wat gegoogel kom ik er nog niet achter of er een manier is om de simplexml_load_file functie te vertellen dat hij de codes op de juiste manier om moet zetten.
Iemand enig idee hoe ik dit wel kan doen?