[Xpath][PHP] error: could not be converted to string

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Op het moment ben ik bezig met het maken van een script dat er voor zorgt dat ranglijsten (alpine skien) van een externe website binnen haalt. Vervolgens wil ik de data verwerken in mijn eigen site. Overigens volkomen legaal, volgens de IT manager van de desbetreffende organisatie. Nou lukt het wel om de data op te halen alleen het verwerken van de data in mijn eigen site lukt totaal niet, althans niet zoals ik wil. Ik heb het op dertig verschillende manier geprobeerd en het lukt alleen door het commando 'print' te gebruiken in PHP. Alleen daar kan ik niet de nodige bewerkingen op los laten. Wat doe ik fout?

Dit gebruik ik om de data binnen te halen. (wat overigens prima werkt)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//ophalen van het document
$url = 'http://www.fis-ski.com/uk/disciplines/alpineskiing/cupstandings.html?suchen=true&suchcompetitorid=&suchseason=2010&sector=AL&suchgender=L&suchcup=WC&suchnation=&discipline=ALL&search=Search';
$html = file_get_contents($url);
$doc = new DomDocument();
@$doc->loadHTML($html);

//scores uit het document filteren
$xpath = new DomXpath($doc);
$titels1a = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[2]");
$titels1b = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[3]");
$titels1c = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[5]");
$titels1d = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[6]");
$titels1e = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[8]");
$titels1f = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[9]");
$titels1g = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[11]");
$titels1h = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[12]");
$titels1i = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[14]");
$titels1j = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[15]");
$titels1k = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[17]");
$titels1l = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[18]");
$titels1m = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[20]");
$titels1n = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[21]");


Dit gebruik ik om de data te verwerken in mijn eigen pagina. Het resultaat is een foutmelding als output:

Catchable fatal error: Object of class DOMNodeList could not be converted to string in

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<table width="100%" border="0" cellspacing="0" cellpadding="0">
   <tr>
    <td>


 <?php

 //hier plaatsen we het nieuws in zijn eigen tabel\\
                                     
                                      
                                      echo
                                         "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">".
                                         "<tr>".
                                         "<td>".
                                         "<table width=\"190\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">".
                                         "<tr>".
                                         "<td><img src=\"images/spacer-white.gif\" width=\"10\" height=\"10\"/></td>".
                                         "</tr>".
                                         "<tr>".
                                         "<td align=\"center\" class=\"plain-text-table-bold\">{$titels1a}\"></td>".
                                         "</tr>".
                                         "<tr>".
                                         "</table>".
                                         "</td>".
                                         "<td width=\"10\">&nbsp;</td>".
                                         "</tr>".
                                         "</table>";
                                         
                            //hier beginnen we de indeling en printen de tabel in het bijhorende cell
                            
                            
                        
                        
                   
                  ?>      
             </tr>                 
          </td>
    </table>


Het bovenstaande lukt wel als je het onderstaande gebruikt

code:
1
2
3
4
5
print $titels1a->item(0)->nodeValue . "\n";
print $titels1b->item(0)->nodeValue . "\n";
print $titels1c->item(0)->nodeValue . "\n";
print $titels1d->item(0)->nodeValue . "\n";
print $titels1e->item(0)->nodeValue . "\n";


Het nadeel van het bovenstaande is dat ik de tekst niet kan bewerken. Het liefst wil ik de gegevens in MYSQL importeren maar als je een node niet kan converteren naar een string dan zal dit helemaal onmogelijk zijn.

PS: Ik vraag met dit topic niet om harde code maar gewoon hulp omdat ik het dit keer echt niet zelf uit kom. Niet met behulp van andere forums en ook niet met behulp van andere tutorials.

Groet,

Bjorn

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Gebruik anders gewoon
code:
1
string(/html/body/table/tr[4]//tr[4]//td[2])

Maar dan nog doen al die gelijkende namen denken aan een gebrek aan basiskennis/niet gebruiken arrays. Daarnaast, waarom zou je de string nodeValue niet in een andere variabele kunnen stoppen om te bewerken? :?

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dingen die je kan afdrukken kun je ook bewerken, als je ze maar in een variabele stopt. Als ze je dat op andere fora niet kunnen vertellen, dan kunnen ze daar niet programmeren. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • lordgandalf
  • Registratie: Februari 2002
  • Laatst online: 05-09 17:55
en als je de info die je print in een string mept dus $string = ipv print ?
Dat zouw toch moeten kunnen imho.

Steam: Profile / Socialclub: Profile / Uplay: minedwarf / Origin: lordgandalf3


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jezus ik blijf mijzelf een noob vinden :(. Maargoed dit kon ik serieus niet vinden. Het is wel jammer dat ik er zelf niet op ben gekomen. Thanks ndeleeuw! Werkt perfect.