[php/xml] encoding probleem, cdata string wordt `afgekapt`

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het navolgende probleem, waarbij ik het sterke gevoel heb dat het met encoding te maken heeft.
Ik heb een XML-feed (deze genereer ik zelf, dus als er iets aangepast moet worden is dat geen probleem) met enkele text velden- en een cdata-veld. Voorbeeld:

code:
1
2
3
4
5
6
7
8
9
10
11
  <?xml version="1.0" ?> 
- <root>
- <page>
  <displayName>over foo</displayName> 
- <contentText>
- <![CDATA[ <p>Geschiedenis<br /> Bla</p><p>foo</p> ]]> 
  </contentText>
  <dateLastModified>1165760050</dateLastModified> 
  <pageType>normal</pageType> 
  </page>
  </root>


Vervolgens ga ik dit bestand inlezen (file_get_contents) en parsen, met behulp van een parse-class. Deze class, ik zal hem op verzoek posten, maakt gebruik van een 'xml_parser_create' object. Werkt allemaal top, echter een raar probleem treedt op.

Namelijk: als de parser door de nodes heen `loopt` en hij komt bij het CDATA-veld en ik doe een echo op dat moment, wordt de HTML die in het CDATA-veld staat netjes en correct getoond op het scherm. Echter, als ik deze code in een class-variabele opsla, wat nodig is, dan kapt hij de tekst op een hele rare manier af. Om bij bovenstaand voorbeeld te blijven; in de classe-variabele waar ik de html-code in opsla komt dan bijv. de string `la</p><p>foo</p>` te staan (het laatste gedeelte van het CDATA-gedeelte dus).

Hij lijkt dit willekeurig af te kappen - ik kan geen raar teken in de tekst vinden die dit veroorzaakt - maar toch heb ik het gevoel dat het met encoding te maken heeft.

Snapt iemand wat hier gebeurd, of herkent iemand dit?
Mijn uiteindelijke content wordt getoond in een document die als volgt is opgebouwd:
code:
1
2
3
4
5
6
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<!--etc...-->

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
$this->parser = xml_parser_create();


...moest worden:

PHP:
1
$this->parser = xml_parser_create("UTF-8");