Werte auslesen und verarbeiten
Bully
- php
Hallo
Ich möchte gerne mehrere Dokumente wie dieses:
http://www.earthlost.de/view.phtml?page=6f1685c02a3c88f8cf1016cf0c57b37c
auswerten. Also aus jedem einzelnen dieser Dokumente z.B. die Anzahl der Snatcher auslesen und anschließend zusammenzählen. Das ganze dann über html ausgeben...
Ich habe dieses Tut gelesen:
http://tut.php-quake.net/de/index.html
und zumindest in seinen Grundzügen habe ich PHP verstanden. html kenne ich bereits, genauso wie logische Verknüpfungen und dergleichen.
Aber ich kann dem Turorial nicht entnehmen, wie ich als User z.B. mehrere der oben genannten Links eingebe und er mir dann die Werte für Snatcher usw zusammenzählt und ausgibt...
Naja, und da wollte ich euch um Hilfe bitten =)
Also aus jedem einzelnen dieser Dokumente z.B. die Anzahl der Snatcher auslesen und anschließend zusammenzählen.
auch wenn dus vermutlich nicht hören willst: darfst du das überhaupt?
Naja, und da wollte ich euch um Hilfe bitten =)
dann fagen wir mal so an: was machst du als mensch, wenn du versuchst werte aus diesen seiten zu ermitteln, wenn du nur die urls hast?
bitte schritt für schritt beschreiben
Also aus jedem einzelnen dieser Dokumente z.B. die Anzahl der Snatcher auslesen und anschließend zusammenzählen.
auch wenn dus vermutlich nicht hören willst: darfst du das überhaupt?Naja, und da wollte ich euch um Hilfe bitten =)
dann fagen wir mal so an: was machst du als mensch, wenn du versuchst werte aus diesen seiten zu ermitteln, wenn du nur die urls hast?
bitte schritt für schritt beschreiben
Es ist nicht verboten was ich tue, da bereits für genau dieses BG gleiche Tools im umlauf sind, welche jedoch für meinen Geschmack absolut chaotisch sind und außerdem gebühren verlangt werden (ingame).
Sooo, was ich machen würde:
1. URL(s) öffnen
2. Textzeile "Snatcher" suchen
3. dazugehörigen Wert suchen und merken/aufschreiben
4a. mit evtl weiteren URLs die schritte 1. - 3. wiederholen, andernfalls:
5. zusammenrechnen
6. 1. - 5. mit anderen möglichen Textzeilen wiederholen, bsp "Narubu"
7. wenn alles ausgewertet ist das ganze zusammenfassen und ausgeben
Es ist nicht verboten was ich tue, da bereits für genau dieses BG gleiche Tools im umlauf sind, welche jedoch für meinen Geschmack absolut chaotisch sind und außerdem gebühren verlangt werden (ingame).
wenn du dir sicher bist, dass es nicht verboten ist - dann ist ja gut
Sooo, was ich machen würde:
- URL(s) öffnen
- Textzeile "Snatcher" suchen
- dazugehörigen Wert suchen und merken/aufschreiben
4a. mit evtl weiteren URLs die schritte 1. - 3. wiederholen, andernfalls:- zusammenrechnen
- mit anderen möglichen Textzeilen wiederholen, bsp "Narubu"
- wenn alles ausgewertet ist das ganze zusammenfassen und ausgeben
hört sich schon sehr vernünftig an, bei welchem der probleme scheiterst du?
im übrigen kann man jeden der von dir genannten schritte noch weiter auf kleinere teilbereiche reduzieren
Sooo, was ich machen würde:
- URL(s) öffnen
- Textzeile "Snatcher" suchen
- dazugehörigen Wert suchen und merken/aufschreiben
4a. mit evtl weiteren URLs die schritte 1. - 3. wiederholen, andernfalls:- zusammenrechnen
- mit anderen möglichen Textzeilen wiederholen, bsp "Narubu"
- wenn alles ausgewertet ist das ganze zusammenfassen und ausgeben
hört sich schon sehr vernünftig an, bei welchem der probleme scheiterst du?
im übrigen kann man jeden der von dir genannten schritte noch weiter auf kleinere teilbereiche reduzieren
Naja, also genau genommen scheiterts schon beim Öffnen des Dokumentes... Wie bringe ich ihn dazu, aus dem Teil die Variable rauszusuchen und dann auch noch den zugehören Wert auszugeben? Irgendwie so:
§var_snatch = 'Dokument#Snatcher';
oder wie? Naja und wenn man das alles hat muss man ja
$snatch_ges= '§var_snatch1'+'§var_snatch2'+'§var_snatch3'
usw. Und am Ende:
echo 'Snatcher:' $snatch_ges
Das ist so mein Ansatz
- URL(s) öffnen
- Textzeile "Snatcher" suchen
Naja, also genau genommen scheiterts schon beim Öffnen des Dokumentes... Wie bringe ich ihn dazu, aus dem Teil die Variable rauszusuchen und dann auch noch den zugehören Wert auszugeben?
halt halt ;) grade noch warens 2 punkte (schon vergessen: kleine teilbereiche)
was ist jetzt das erste problem, das öffnen des dokuments? oder das raussuchen des werts? nichts überstürzen
allein den ersten punkt man in noch viel kleinere teilbereiche ausplitten - im php-kontext sind das zb
1a) url aufrufen/öffnen (fopen())
1b) den inhalt lesen und in eine variable speichern (fread())
und den ersten debug-schritt
1c) den kompletten inhalt der in 1b gelesenen variable ausgeben um zu sehen, ob da überhaupt das gewünschte daherkommt
Ok, klappt nicht ganz :( Hab den hier hochgeladen:
<?php
$filename = "http://www.earthlost.de/view.phtml?page=6f1685c02a3c88f8cf1016cf0c57b37c";
$handle = fopen ($filename, "r");
$contents = fread ($handle, "EOF");
echo $contents
?>
Heraus kam
http://skullbreaker.sk.funpic.de/Franz/test.php
Die Errors verstehe ich nur teilweise (nicht wegen dem Englisch)
Der erste gibt mir schon zu denken, geht fopen () bei Funpic nicht? Wenn nicht, wo dann? Pytal?
http://skullbreaker.sk.funpic.de/Franz/test.php
Die Errors verstehe ich nur teilweise (nicht wegen dem Englisch)
dennoch sind fehlermeldungen hilfreich und es ist vernünftig, dass du gleich einen link gepostet hast
Der erste gibt mir schon zu denken, geht fopen () bei Funpic nicht? Wenn nicht, wo dann? Pytal?
das weiss ich nicht wer das erlaubt oder nicht - ich verwende ausschließlich server mit vollzugriff die ich bei server4you, 1&1 und qualityhosting miete
deine fehlermeldung lässts allerdings darauf schließen, dass die serverkonfiguration in der tat fopen() auf externe ressourcen verhindert
"Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in /foo/bar.php on line 6"
der rest sind folgefehler
die fopen()-doku sagt jedenfalls das:
"If PHP has decided that filename specifies a registered protocol, and that protocol is registered as a network URL, PHP will check to make sure that allow_url_fopen is enabled. If it is switched off, PHP will emit a warning and the fopen call will fail."
das ist in deinem fall zwar nicht essentiell, aber fopen nachzubauen ist schon etwas komplizierter ;) darum ist es ggf. interessant, wenn du dir einen anderen host suchst oder die funpic readmes durchgräbst, du du das umgehen kannst/darfst (ggf mit einer benutzerdefinierten php.ini)
hm also fopen() geht auch bei Pytal nicht, also müsste man improvisieren...
http://wiki.pytalhost.de/php.php
Da steht glaub ich was nützliches^^
http://wiki.pytalhost.de/php.php
Da steht glaub ich was nützliches^^
ini_set ist ebenfalls deaktiviert, du kannst also damit die werte lokal für dich auch nicht überschreiben
wenn dieses problem gelöst ist (anderer host?) kanns weitergehen
http://wiki.pytalhost.de/php.php
Da steht glaub ich was nützliches^^
ini_set ist ebenfalls deaktiviert, du kannst also damit die werte lokal für dich auch nicht überschreibenwenn dieses problem gelöst ist (anderer host?) kanns weitergehen
Gäbe es auch die Möglichkeit, dass man den Text aus dem Dokument einfach in ein Eingabefeld kopiert? Wobei das SEHR viel Text werden kann wenn mal 20+ von den Dingern verwertet werden müssen...
Gäbe es auch die Möglichkeit, dass man den Text aus dem Dokument einfach in ein Eingabefeld kopiert? Wobei das SEHR viel Text werden kann wenn mal 20+ von den Dingern verwertet werden müssen...
auch das ist eine möglichkeit
ab dem zeitpunkt wo die werte in der variable stehen ists dann gleich
Naja also machen wir einfach mal weiter als wärs möglich, evtl leg ich mir ja mal einen Webspace zu... Stehen geblieben waren wir beim Öffnen und Lesen, sprich
<?php
$filename = "http://www.earthlost.de/view.phtml?page=6f1685c02a3c88f8cf1016cf0c57b37c";
$handle = fopen ($filename, "r");
$contents = fread ($handle, "EOF");
// echo $contents
?>
Wobei ich beim fopen noch einen Schritt zurück gehen würde -> Der User gibt in ein Textfeld eine URL pro Zeile ein - jede von denen muss ja geöffnet werden
Wobei ich beim fopen noch einen Schritt zurück gehen würde -> Der User gibt in ein Textfeld eine URL pro Zeile ein - jede von denen muss ja geöffnet werden
zusatzfeature - wenn das ander funktioniert, pack sie in eine funktion, schreib das zusatzfeature drumherum und führe die funktion mehrfach aus ;)
jetzt sind reguläre ausdrücke oder stringfunktionen dran
stripos() und substr() werden dir ggf weiterfehlen oder aber preg_match()
gib deinen gelesenen string aus und überlege dir zuerst, was du exakt tun willst - ohne testdaten ist das allerdings etwas schwieriger ;)
Wobei ich beim fopen noch einen Schritt zurück gehen würde -> Der User gibt in ein Textfeld eine URL pro Zeile ein - jede von denen muss ja geöffnet werden
zusatzfeature - wenn das ander funktioniert, pack sie in eine funktion, schreib das zusatzfeature drumherum und führe die funktion mehrfach aus ;)
jetzt sind reguläre ausdrücke oder stringfunktionen dran
stripos() und substr() werden dir ggf weiterfehlen oder aber preg_match()
gib deinen gelesenen string aus und überlege dir zuerst, was du exakt tun willst - ohne testdaten ist das allerdings etwas schwieriger ;)
Ich hab mal angefangen so wie ichs nach dem momentanen Kenntnisstand machen würde: (Also den Schiffstyp ($xyz) suchen und dann den dazugehören Wert($n_xyz)
<?php
$filename = "http://link-zum-dok.de";
$handle = fopen ($filename, "r");
$content = fread ($handle, "EOF");
// echo $content
$snatch = stripos($content, Snatcher);
$grandor = stripos($content, Grandor);
// usw für jede Schiffsklasse
$n_snatch = substr($snatcher, 7);
$n_grandor = substr($grandor, 6);
// Problem!
?>
Zum Problem: Ich will ja den String NACH dem Schiffsnamen wiedergeben, geht das wenn ichs mache wie da oben? Ich glaube nicht oder? Da bräuchte ich mal Hilfe...
Ach ja, und es erscheint nicht jede mögliche Schiffsklasse im Bericht, also brauch ja ja noch sowas wie
$kemzen = stripos($content, Kemzen);
if ($kemzen === false) {
irgendwas;
}
Wenn false soll er das einfach ignorieren, brauch ich dann diese Zeilen?
Zum Problem: Ich will ja den String NACH dem Schiffsnamen wiedergeben, geht das wenn ichs mache wie da oben? Ich glaube nicht oder? Da bräuchte ich mal Hilfe...
substr($snatcher+8, 10) das liefert dir die 10 zeichen nach Snatcher - du stripos liefert dir das erste zeichen - du willst aber ab dem letzten loslegen
Wenn false soll er das einfach ignorieren, brauch ich dann diese Zeilen?
ja, sonst bekommst du eine fehlermeldung, wenn du nicht existente dinge ausgibst - und fehlermeldungen unterdrücken ist keine fehlerbehandlung
zu prüfen ob etwas existiert oder nicht aber sehrwohl
Zum Problem: Ich will ja den String NACH dem Schiffsnamen wiedergeben, geht das wenn ichs mache wie da oben? Ich glaube nicht oder? Da bräuchte ich mal Hilfe...
substr($snatcher+8, 10) das liefert dir die 10 zeichen nach Snatcher - du stripos liefert dir das erste zeichen - du willst aber ab dem letzten loslegen
Wenn false soll er das einfach ignorieren, brauch ich dann diese Zeilen?
ja, sonst bekommst du eine fehlermeldung, wenn du nicht existente dinge ausgibst - und fehlermeldungen unterdrücken ist keine fehlerbehandlungzu prüfen ob etwas existiert oder nicht aber sehrwohl
<?php
$filename = "http://link-zum-dok.de";
$handle = fopen ($filename, "r");
$content = fread ($handle, "EOF");
// echo $content
if ($snatch === false) {
irgendwas;
}
$snatch = stripos($content, Snatcher);
$grandor = stripos($content, Grandor);
// usw für jede Schiffsklasse
if ($snatch === true) {
$n_snatch = substr($snatcher+8, 10);
}
if ($grandor === true) {
$n_grandor = substr($grandor+7, 10);
}
// usw
?>
Geht das so? Wenn ja zum nächsten Problem: nicht immer muss ich 10 Stellen nach der Schiffsklasse auslesen, manchmal sind es mehr, manchmal weniger. Hört er am Ende der Zeile auf oder gibt es einen Parameter wie EOF, nur halt mit "Ende der Zeile"
Geht das so? Wenn ja zum nächsten Problem: nicht immer muss ich 10 Stellen nach der Schiffsklasse auslesen, manchmal sind es mehr, manchmal weniger.
du dann suche ab dem gefundenen "snatcher" einfach das nächste, wo er aufhören soll - ein </td> oder ähnliches wird sich da wohl finden und ermittel so die anzahl der stellen
Hi!
Ja. Dann aber lieber per post uebergeben. Bei so viel Daten, kommt get schnell an seine Grenzen. Aber auch post kann dabei an Grenzen stossen. Ich kann mir gut vorstellen, dass die Freehoster da ebenfalls ihre eigenen Vorstellungen haben.
Als letztes waere da noch die Moeglichkeit, die Datei innerhalb deines Webspace zu speichern. Hier wirds allerdings rechtlich bedenklich, denn die wird jeder dort finden koennen. Besonders praktisch ist es auch nicht.
Die beste Moeglichkeit bleibt ein Wechsel zu einem vernuenftigen Hoster.
Eine Option waere noch denkbar: Javascript. Schon versucht per Ajax deine Dateien zu laden? Dann findet der Hauptanteil deines Tools im Client statt.
Hi,
Eine Option waere noch denkbar: Javascript. Schon versucht per Ajax deine Dateien zu laden?
Auch das geht nicht ueber Domaingrenzen hinweg.
MfG ChrisB
Moin!
Auch das geht nicht ueber Domaingrenzen hinweg.
Stimmt. Ich hab wohl zuviel mit VB rumgemacht in letzter Zeit.
Hi,
hm also fopen() geht auch bei Pytal nicht, also müsste man improvisieren...
fsockopen ist manchmal auch bei Hostern erlaubt, die allow_url_fopen deaktiviert haben.
MfG ChrisB