Ankündigung

Einklappen
Keine Ankündigung bisher.

Bestimmte Textteile auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Immi
    hat ein Thema erstellt Bestimmte Textteile auslesen.

    Bestimmte Textteile auslesen

    Hallo zusammen,

    soll für nen Kumpel ein kleines Tool schreiben. Unter anderem soll es folgendes können - bekomme es jedoch nicht hin :/ -

    Es soll ein Text in eine Textarea eingegeben werden. Dieser ist immer gleich aufgebaut nur enthält er immer unterschiedliche Werte (Es geht um ein Browsergame und da sollen Rohstoffe etc. ausgelesen werden)
    Und diese Werte, nur Zahlen, keine Strings, sollen dann bestimmten Variablen zugeordnet werden.

    So das ises eigentlich schon, nur hab ich keine Ahnung wie ich diese Zahlen da "auslesen" kann. Wär cool wenn mir da jemand helfen könnte

    mfg
    Immi

  • lazydog
    antwortet
    Das sieht ja noch viel schlimmer aus, als befürchtet. Ich frage mich, warum du uns dann mit Beispielen alà Rohstoff XX - 37444 kommst, die mit deinem Chaos eigentlich nichs zu tun haben.
    Da fast jede Zeile deiner Datei eine eigene Struktur hat, wird dir wohl nichts übrig bleiben, als jede einzelne zu analysieren und in ein brauchbares Format zu transformieren.

    Einen Kommentar schreiben:


  • cycap
    antwortet
    lol vergiss es, das wird dir hier keiner programmieren, das musst du schon selber machen und wie dir hier schon mehrmals gesagt wurde musst du die Grundlagen lernen

    Einen Kommentar schreiben:


  • Immi
    antwortet
    Hier ein Beispiel für so einen Spionagebericht der ausgelesen werden soll:

    Spionagebericht von Best [01:60:11] vom 2008-06-04 15:47:21
    Roheisen Metall Kryptonit Spice Energie
    682728 7133 192072 4098 7456
    Gebäude
    Roheisenmine 23 Hochofen 18 Kryptonitmine 23 Spicemine 8 Fusionskraftwerk 24
    Entwicklungszentrum 6 Waffenfabrik 7 Flottenstützpunkt 1 Roheisenlager 6 Metalllager 1
    Kryptonitlager 5 Partikelschild 1
    Verteidigung
    Mörser 2 Turboflak 12 Ionengeschütz 15 Positron Lighter 28 Kleine Schildkuppel 1
    Große Schildkuppel 1
    Flotte
    Großer Transporter 13 Sternenkreuzer 2
    Forschungen
    Minentechnik 11 Energietechnik 8 Antriebsforschung 8 Raketentriebwerk 8 Diffusionstriebwerk 8
    Spionagetechnik 8 Waffentechnik 7 Schildtechnik 8 Abwehrsysteme 6 Zielsysteme 9
    Partikel-Analyser 4 Gravitontechnik 8
    Chance auf Spionageabwehr: 45%
    Und hier nochmal das Script:

    PHP-Code:
    <?
    $text = $_POST['text']; 
    file_put_contents("datei.txt",$text);

    $daten = file('datei.txt');
    $key = "Roheisenmine";

    function get_value($key, $daten){
        foreach ($daten as $zeile){
            if (preg_match('/^$key/Ui', $zeile)){
                list($key, $value) = explode('-', $zeile); // Sofern Zeile so formatiert
                return(trim($value));
            }
        }
    }  
    echo $key;
    ?>

    Einen Kommentar schreiben:


  • Daniel
    antwortet
    Es wäre sehr hilfreich zu wissen, wie die einzelnen Zeilen aufgebaut sind, damit könnten wir dir sehr viel besser helfen, also so wie jetzt blind raten zu müssen.

    Allerdings würde auch ich dir eine Datenbank empfehlen, damit ist dies viel einfacher zu realisieren.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Ja.
    Zitat von lazydog Beitrag anzeigen
    Ein wenig Grundlagenstudium würde eigentlich nicht schaden.

    Einen Kommentar schreiben:


  • Immi
    antwortet
    Mhh stimmt...danke Das Script ist jetzt fehlerfrei liefert mir aber so wies ist noch kein Ergebnis (z.b. mit get_value('Eisenerz', $daten); )

    Muss ich jetzt noch was machen...oh man Blackout ... :/

    Einen Kommentar schreiben:


  • Manko10
    antwortet
    list() ist eigentlich auch keine Funktion, sondern ein Sprachkonstrukt. Das zeigt schon allein die seltsame und gewöhnungsbedürftige Art der Anwendung. Einer Funktion kann man nämlich keinen Wert zuweisen.

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    list() ist natürlich eine Funktion, keine Variable und braucht daher kein $

    Einen Kommentar schreiben:


  • Immi
    antwortet
    Gut danke
    Ich entschuldige mich hab bin noch ein ziemlicher n00b auf dem Gebiet von PHP und hab das auch ne Weile net mehr gemacht bin also ein wenig eingerostet.
    Dennoch vielen Dank erstmal für die reichlichen Tips

    EDIT:
    Bei drem Script trat jetzt noch ein Fehler auf:
    Fatal error: Can't use function return value in write context in /srv/www/htdocs/web51/html/SI-Tool/datei1.php on line 11


    Das ist diese Zeile:
    Code:
    $list($key, $value) = explode('-', $zeile);

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Zitat von Immi Beitrag anzeigen
    Ist mit $key der gesuchte Wert gemeint?
    Nein, sondern die Bezeichnung, also z.B. «Eisenerz». Und zurück erhälst du dann die Menge
    Zitat von Immi Beitrag anzeigen
    Und bei $zeile muss ich einfach nen Wert vorher der Variable zuweisen..denk ich mal
    Und wenn das denken nicht ausreicht, sagt würde dir das Handbuch sagen, dass du dort gar nichts zuzuweisen brauchst, du rufst einzig die Funktion mit
    PHP-Code:
    get_value('Eisenerz'$daten); 
    auf.
    Ein wenig Grundlagenstudium würde eigentlich nicht schaden.

    Einen Kommentar schreiben:


  • Immi
    antwortet
    Ja so in etwa meinte ich das
    Ist mit $key der gesuchte Wert gemeint? Und bei $zeile muss ich einfach nen Wert vorher der Variable zuweisen..denk ich mal

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Ich weiss nicht, was du unter in «Arrays pro Zeichenkette zerlegen» verstehst. Aber wenn du die Daten, wie in deinem Beispiel in
    Code:
    Schlüsselbegriff - Inhalt
    zeilen weise abspeicherst, dann kannst du die Daten am Anfang deines Scripts mit
    PHP-Code:
    $daten file('filename'); 
    in einen Array lesen und mit der Funktion
    PHP-Code:
    function get_value($key$daten){
        foreach (
    $daten as $zeile){
            if (
    preg_match('/^$key/Ui'$zeile)){
                
    $list($key$value) = explode('-'$zeile); // Sofern Zeile so formatiert
                
    return(trim($value));
            }
        }

    die gewünschten Werte auslesen.

    Einen Kommentar schreiben:


  • Immi
    antwortet
    Noch ne Frage: Ist es auch möglich die Textdatei komplett in einzelne Arrays pro Zeichenkette zu zerlegen? Dann könnte ich ja auch die Arrays direkt ansteuern und auslesen. Mit substr() und stripos() bekomm ichs irgendwie net hin. Weil wenn ich zum Beispiel nach "Eisenerz" suche und true ausgegeben bekomme weil das Wort im Text enthalten ist, weiß ich ja immer noch nicht wieviel Eisenerz vorhanden ist. Und den String für diesen Wert kann ich ja net mit stripos() überprüfen weil der String immer anders ist

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Viel einfacher wäre es natürlich, die Daten in einer Datenbank zu speichern. Dann kannst du direkt auf die gewünschten Daten zugreifen.

    Einen Kommentar schreiben:

Lädt...
X