Hiho, ich hoffe hier kann mir einer helfen, also ich habe folgendes Problem, ich hab mir in PHP ne site geschrieben der man nen link übergibt und die dann den dortigen HTML-CODE ausliest und mit preg_match_all bestimmte Daten ausliest. Soweit so gut funktioniert ja auch alles, nur das Problem ist eben, dass er nach dem 55.Feld im array einfach aufhört auszulesen obwohl die Werte noch viel weiter gehen...
Aber hier mal der Code:
Code: In Zwischenablage kopieren (nur IE)
in $inhalt steht dann der Quellcode zu folgendem Link:
LinkAusgeben tut er mir dann folgendes(Zahlen stimmen nicht überrein):
Array ( [0] => Array ( [0] => Arbeiter [1] => 26.628 [2] => verfügbare Arbeitskräfte [3] => 2.790 [4] => Energie [5] => 107.248 [6] => Eisen [7] => 5.457 [8] => Silizium [9] => 35.039 [10] => Kohlenstoff [11] => 528 [12] => Wasser [13] => 50.593 [14] => Sauerstoff [15] => 3.240 [16] => Wasserstoff [17] => 57.351 [18] => Planetenzentrale [19] => 41 [20] => Raumhafen [21] => 14 [22] => Wohngebäude [23] => 42 [24] => Solarpark [25] => 38 [26] => Eisenmine [27] => 43 [28] => Siliziumraffinerie [29] => 40 [30] => Kohlenstoffgewinnungsanlage [31] => 36 [32] => Bohrturm [33] => 40 [34] => Chemiefabrik [35] => 38 [36] => Recyclinganlage [37] => 3 [38] => Rohstofflager [39] => 48 [40] => Schiffsfabrik [41] => 27 [42] => Waffenfabrik [43] => 27 [44] => Forschungszentrum [45] => 32 [46] => Schiffsbasiselement [47] => 51 [48] => Lagerraum [49] => 57 [50] => Schiffspanzerung [51] => 50 [52] => Verbrennungsantrieb [53] => 41 [54] => Fusionsantrieb [55] => 42 ) [1] => Array ( [0] => colspan=3>Arbeiter [1] => colspan=3>26.628 [2] => colspan=3>verfügbare Arbeitskräfte [3] => colspan=3>2.790 [4] => colspan=3>Energie [5] => colspan=3>107.248 [6] => colspan=3>Eisen [7] => colspan=3>5.457 [8] => colspan=3>Silizium [9] => colspan=3>35.039 [10] => colspan=3>Kohlenstoff [11] => colspan=3>528 [12] => colspan=3>Wasser [13] => colspan=3>50.593 [14] => colspan=3>Sauerstoff [15] => colspan=3>3.240 [16] => colspan=3>Wasserstoff [17] => colspan=3>57.351 [18] => colspan=3>Planetenzentrale [19] => colspan=3>41 [20] => colspan=3>Raumhafen [21] => colspan=3>14 [22] => colspan=3>Wohngebäude [23] => colspan=3>42 [24] => colspan=3>Solarpark [25] => colspan=3>38 [26] => colspan=3>Eisenmine [27] => colspan=3>43 [28] => colspan=3>Siliziumraffinerie [29] => colspan=3>40 [30] => colspan=3>Kohlenstoffgewinnungsanlage [31] => colspan=3>36 [32] => colspan=3>Bohrturm [33] => colspan=3>40 [34] => colspan=3>Chemiefabrik [35] => colspan=3>38 [36] => colspan=3>Recyclinganlage [37] => colspan=3>3 [38] => colspan=3>Rohstofflager [39] => colspan=3>48 [40] => colspan=3>Schiffsfabrik [41] => colspan=3>27 [42] => colspan=3>Waffenfabrik [43] => colspan=3>27 [44] => colspan=3>Forschungszentrum [45] => colspan=3>32 [46] => colspan=3>Schiffsbasiselement [47] => colspan=3>51 [48] => colspan=3>Lagerraum [49] => colspan=3>57 [50] => colspan=3>Schiffspanzerung [51] => colspan=3>50 [52] => colspan=3>Verbrennungsantrieb [53] => colspan=3>41 [54] => colspan=3>Fusionsantrieb [55] => colspan=3>42 ) ) Array
Ich hoffe mal einer von euch findet den Fehler, ich habs schon mit allen Möglichen modifiern probiert und hab auch mal nen anderen regulären Ausdruck verwendet, aber trotzdem Fehlanzeige.
thx schonmal
Gagi
Antworten
Hm ich geh da normalerweise anders vor:
Den HTML Code einlesen, per while und preg_match durchlaufen, gefundene Werte in Array packen und ersetzten, nächster while durchlauf...
Nebenbei: willst du das td Tag hier nicht schliessen?
Code: In Zwischenablage kopieren (nur IE)
2.
Naja das hab ich auch schon versucht, hat aber irgendwie net richtig funktioniert...
hab ich doch geschlossen:
Code: In Zwischenablage kopieren (nur IE)
3.
$startcode="%<td>"; //HIer hat das > gefehlt ;)
Was heisst hat nicht richtig funktioniert?
4.
Also ich hab das mit ner For-Schleife probiert und hatte eben dann das Problem, dass dann immer das gleiche Ausgegebn wurde, also ich weiß nicht wie ich sagen kann, dass er wieder an der letzen Cursor-Position weiter macht.
Bei nem anderen Forum haben sie eben gemeint ich sollte doch gleich preg_match_all nehmen da das, das gleiche macht.
Im Prinzip is es egal auf welche Art und Weise mir die Werte eingelesen werden, hauptsache ich kriege alle Werte rein und nicht nur die Hälfte.
Kann es eigentlich sein, dass der Code zu lang ist zum einlesen und deshalb bei der hälfte stoppt, weil die Zeichenkette zu ende ist ???
5.
Du musst die gefundenen Stellen halt mit Texten ersetzten die nicht gematcht werden...
Und wieso du das mit einer for Schleife machst kann ich mir nicht erklären.
Schau dir mal das Beispiel aus der FAQ an:
http://www.php-faq.de/q/q-regexp-links-finden.html6.
Ok mit ner while Schleife geht das genauso.
Die Frage ist jetzt ob ich wie im Beispiel $Inhalt einfach überschreiben kann, ich meine ersetzt er mir nicht dann den ganzen Text durch den neuen ???, oder fügt er dann nur diesen Text in die gewünschte Stelle ein ??? weil das Bsp bezieht sich ja auf einen 1 zeiligen HTML-CODE.
7.
OK ich hab jetzt mal rausgefunden, das der HTML Code den ich einlese zu lang ist.
Was meinst du kann ich dagegen tun, ich meine kann ich den Text auf 2 Variablen oder mehr schreiben lassen ???
8.
Mhh jetzt hätte ich da noch ein weiteres Prob:
Ich will die ausgelesenen Werte in ne Datenbank schreiben. Ich hab den Befehl in ne Variable geschrieben und lass ihn mir ausgeben. Dort scheint dann alles richtig zu sein, doch wenn ich per mysql_query das ganze an die DB übergebe, schreibt er mir nicht die Zahlen in die Datenbank sondern "<td colspan=3>51</td>" Doch wieso krieg ich zuvor die richtigen Werte ???
9.
äh, gestattest du uns einen einblick in diesen code?
10.
Also da es mit dem Auslesen nur an der fehlerhaften Einlese der Datei lag sieht der Code wie folgt aus:
Code: In Zwischenablage kopieren (nur IE)
Bei der Ausgabe wird der ganze Befehl mit Zahlen gepostet und man kann ihn kopieren und per copy&paste in die Datenbank einfügen, doch wenn php das machen soll funktioniert das eben nicht, weil die zahlen verschwinden und plötzlich ein Text drann steht
11.
Zitat:
Ok mit ner while Schleife geht das genauso.
Genau genommen gehts nur so, es sei denn du weisst schon zu Beginn wieviel mal preg_match was matchen wird, dann könntest du auch eine For Schleife nehmen.
Und wieso du das Beispiel aus der FAQ nicht auch auf dein Problem anwenden kannst bleibt mir schleierhaft...
12.
Jap ich weiß auch wieviel Elemente ich auslesen möchte
ich kann ja das Beispiel anwenden, nur komm ich so genau auf das gleiche Ergebnis
aber wieso jetzt auf einmal die Variablen falsch ausgegen werden is MIR schleierhaft