Bully: Werte auslesen und verarbeiten

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 =)

  1. 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

    1. 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

      1. 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:

        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:
        4. zusammenrechnen
              1. mit anderen möglichen Textzeilen wiederholen, bsp "Narubu"
        5. 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

        1. 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:
          4. zusammenrechnen
                1. mit anderen möglichen Textzeilen wiederholen, bsp "Narubu"
          5. 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

            1. URL(s) öffnen
            2. 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

            1. 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?

              1. 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)

                1. 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^^

                  1. 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

                    1. 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

                      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...

                      1. 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

                        1. 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

                          1. 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 ;)

                            1. 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?

                              1. 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

                                1. 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

                                  <?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"

                                  1. 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

                      2. 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.

                        --
                        "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                              - T. Pratchett
                        1. Hi,

                          Eine Option waere noch denkbar: Javascript. Schon versucht per Ajax deine Dateien zu laden?

                          Auch das geht nicht ueber Domaingrenzen hinweg.

                          MfG ChrisB

                          --
                          „This is the author's opinion, not necessarily that of Starbucks.“
                          1. Moin!

                            Auch das geht nicht ueber Domaingrenzen hinweg.

                            Stimmt. Ich hab wohl zuviel mit VB rumgemacht in letzter Zeit.

                            --
                            "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                                  - T. Pratchett
                  2. 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

                    --
                    „This is the author's opinion, not necessarily that of Starbucks.“