Hey,

Ik heb een (groot) probleem met een team_parse voor whatpulse.
De bedoeling is redelijk simpel :
-XML parser maken met php -> zet alle waardes in database
-En daarna worden waardes uit database gehaald voor statistieken.

Ik heb al de standaard parser die ze gebruiken bij whatpulse gedownload (staat op officiele site) en hij stopt bij een speciaal character . Het moet eigenlijk een é (e acute ofzo) zijn maar hij ziet dat als een speciaal character (in de XML pagina zie je ook een vraagteken , maar als je dat vraagten copierd en ergens plakt zie je een vierkantje) [URL]http://whatpulse.org/api/teams/1295.xml dit is de XML pagina waar alle gegevens van worden gelezen , en als je even zoekt (Control + F) op de naam Mr_fr dan zie je daar het vraagteken al staan.

En dit is de gebruikte team_parse.php (bij andere parser lukt het ook niet)

<pre>
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
	/*
	 *	readTeamStats(teamid)
	 *		-	Read WhatPulse team statistics from the webapi into an array.
	 *
	 *	Author: [email protected]
	 *  Based on script for www.sogamed.com
	 */
	function readTeamStats($teamid, $team_stats, $members)
	{
		// 
		$statistics_tags = array("TeamName", "TeamDescription", "TeamMembers", "TeamClicks", 
								 "TeamKeys", "TeamRank", "TeamDateFormed", "TeamFounder");
								 
		$member_tags 	 = array("MemberName", "MemberUserID", "MemberKeys", "MemberClicks", 
								 "MemberLastPulse", "MemberManager", "MemberCountry");
	
		
		
		$data = file_get_contents("http://whatpulse.org/api/teams/".$teamid.".xml");
		
		$data = utf8_decode($data);
		$parser = xml_parser_create();
		
		xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
		xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
		xml_parse_into_struct($parser, $data, $values, $index);
		xml_parser_free($parser);
		
		for ($x = 0; $x < sizeof($statistics_tags); $x++) 
		{
			$team_stats[$statistics_tags[$x]] = $values[$index[$statistics_tags[$x]][0]]['value'];
		}		
		
		for ($x = 0; $x < sizeof($index['Member']); $x++) 
		{
			for ($y = 0; $y < sizeof($member_tags); $y++) 
			{
				if ($values[$index[$member_tags[$y]][$x]]['level'] == 5)
				{
					$members[$x][$member_tags[$y]] = addslashes($values[$index[$member_tags[$y]][$x]]['value']);
				}
			}
		}
	}
	
	$team_stats = array();
	$members    = array();
	
	readTeamStats(1295, &$team_stats, &$members);
	
	print_r($team_stats);
	print_r($members);
?>
</pre>

Ik heb al geprobeerd MET $data = utf8_decode($data); en ook al zonder, maar dit geeft ongeveer dezelfde output.

Misschien kan het ook helpen als ik zeg dat wel wel een tiental (mss wel hondertal) Notice Errors hebben :

Notice: Undefined offset: 299 in team_parse.php on line 42

Notice: Undefined index: in team_parse.php on line 42

Notice: Undefined offset: 299 in team_parse.php on line 42

Notice: Undefined index: in team_parse.php on line 42

en zo gaat het nog een hele tijd door.

Bij voorbaat dank!,
dizzy
En &eacute; heb je ook al geprobeerd? En de karakterset gedefinieerd?

Die notices hebben er weinig mee te maken, die betekenen dat je een waarde uit een niet bestaande sleutel probeert te lezen, en niet bestaande arrays probeert op te roepen.
Ja maar het probleem is dat als ik eregi_replace zou gebruiken :) en met dreamweaver opslaag zit hij te melden dat mijn UNI-8 code dan kapot gaat ofzoiets ...
Maar zoals ik al gezegd heb geeft XML het ook al niet tegoei weer : <MemberName>Mr_Fr&#65533;</MemberName> en als ik dat vraagteken ergens in msn of dreamweaver zeg ... krijg ik een vierkantje ;)

(heb ook al opgeslagen via kladblok en nog eens gerefreshed maar dat geeft ook geen resultaat)
jah gewoon even wachten ... komt zeker envast wel ;) duurt bij mij 15 seconde vanaf start :) en ik gebruik mozilla firefox 2.0.0.5 ...
Ja ik zag het al. Het is gewoon een erg lange lijst. :) Een Mr_fr kan ik niet vinden in ieder geval. Wel zie ik in je bron dat je de xml zo begint:

<?xml version="1.0"?>

Terwijl het gebruikelijk is daar ook een encoding in te zetten. Probeer eens

<?xml version="1.0" encoding="UTF-8"?>

Of in plaats van UTF-8, ISO-8859-1.

[edit]Mr_fr ook gevonden.[/edit]
^^ ik kan niets aan de broncode veranderen ... dat zijn officieel gegenereerd XML pagina's ^^ tenzij ik er iets via PHP aan kan doen?
Je kan via php utf8_encode() over alle data die je naar de XML stuurt laten gaan. Op deze manier dwing je af dat die data met utf8 is gecodeerd. Een XML zonder char set is volgens mij standaard utf-8, volgens mij vereist de XML standaard ook utf-8.

Wat ook kan is dat de pagina waar je de data invoert niet op utf-8 draait. Zet bovenin je code (na <head>) de volgende code:
meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Let op dat deze tag de éérste tag is die in de <head> staat. Anders kan de data die daarvoor geplaatst word niet correct gecodeerd worden, omdat op dat moment het character set nog niet bekend is.
bedoel je
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

of echt zonder <
meta http-equiv="Content-Type" content="text/html; charset=utf-8">
?

[edit] helpt niets :( hebben jullie misschien iets in peto waarbij je die user negeert? zodat we toch al verder kunnen?[/edit]
Nee, dat is met < natuurlijk :)
Ok ... voor de anderen mss heb ik een screenshot genomen met mijn outputprobleem :

Reageren