[PHP] Simplexml_load_file en numerieke html codes

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • AtlonXP1800
  • Registratie: Augustus 2001
  • Laatst online: 29-01 12:01
Ik heb een probleempje bij het inlezen van XML bestanden met PHP.

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?

Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

• XML eet UTF-8
• Jouw bestand is niet netjes UTF-8
• UTF8_encode() jouw bestand voor je het door de parser heenschopt :?

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • IntToStr
  • Registratie: December 2003
  • Laatst online: 19:49
Lijkt me een mooi voorbeeld van utf vs iso character encoding.
Je bestand omzetten naar een andere encoding lijkt me de oplossing.

Beetje late reactie zo te zien, maar beter 2x dan niets he :)

[ Voor 19% gewijzigd door IntToStr op 30-05-2007 17:02 . Reden: Je moet ook niet tussendoor wat anders gaan lezen... ]