Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit PHP Text auslesen
Hallo Leute
Habe hier eine Frage an euch.
Habe hier folgenden Php Script:
<?php
$fp = fopen("Games/asteroids_scores.txt","r");
if ($fp)
{
while(!feof($fp))
{
$text = fgets($fp);
echo"$text";
}
fclose($fp);
}
?>
Damit möchte ich diesen Text auslesen und ausgeben.
Doch das ding liest den kompletten Text aus.
So bekomme ich folgendes Ergebnis:
&name1=alex&score1=1480&name2=asteroids&score2=0
Geht das, dass ich folgendes raus bekomme:
1 alex=1480
2 asteroids=0
[php]
explode();
[php]
ist dein Freund
Ich verstehe das nicht damit kann ich die doch nur teilen.
ja und? ein bisschen Überlegen schadet ja nicht :motz: wenn du richtig gemacht hast, hast du abwechseln im Array mal den Namen, mal der Wert, dann kannst du nochmals teilen oder anderes Stringfuntionen verwenden, um an das gewünschte Ergebnis zu kommen. Das nennt man Programmieren, nicht Copy & Paste ist Programmieren :motz:
Sorry das ich gefragt habe. :dontknow:
Habe nur kein Plan von PHP
Und dachte hier so ein Forum.
Ansonsten kann man ja hier nur Links hinsetzen und Google integrieren.
ach du ärmster, du hast gerade 8 Minuten gebraucht und schon weisst du du dass der gegebene Link für deinen Zweck nichts taugt? Für solches Genie ist dieses Board wirklich nicht geeignet, sorry.
Dann versuche ich eben wo anders.
Schlecht geschlafen :confused:
Shurakai 28-03-2007, 23:19 Hast du dir eigentlich überhaupt mal angeschaut was explode dir zurückgibt, wenn du das auf deinen String da anwendest?
penizillin 28-03-2007, 23:22 mit file_get_contents() bekommst du den inhalt und mit parse_str() bekommst du die einzelnen werte (wie du sie zusammenstellst, ist dein bier). die doku gibt es bei php.net, beispiele dort - zuhauf. deine fragen, die du im laufe der entwicklung bekommst, werden beantwortet. so ein "wie gehts das?" und "mach das mal einer für mich" - nicht. aus dem bauch programmieren, das bringts. hast du es auch beim autofahren lernen auch so gemacht?
Ich weis garnicht wo ich es hinsetzen soll.
So etwa:
<?php
$fp = explode("Games/asteroids_scores.txt","r");
if ($fp)
{
while(!feof($fp))
{
$text = fgets($fp);
echo"$text";
}
fclose($fp);
}
?>
Shurakai 28-03-2007, 23:35 Tu dir und uns n Gefallen und lies erstmal www.peterkropff.de
Ohne Ahnung zu programmieren bringts nicht. Programmieren lernt man nicht von heute auf morgen, das ist ein Prozess der sehr lange dauert und viel Ausdauer erfordert. Dafür lohnt es sich aber auch ;)
Die oben verlinkte Seite ist sehr gut, schau dir das einfach mal an. Hoffe du bist - was manche Beispiele angeht - aber älter als 18 :p
Also habe jetzt folgendes gemacht:
<?php
$fp = fopen("Games/asteroids_scores.txt","r");
$suchen[0] = '/name/';
$suchen[1] = '/score/';
$ersetzen[1] = ':';
$ersetzen[0] = ':';
if ($fp)
{
while(!feof($fp))
{
$text = fgets($fp);
echo"$text";
}
fclose($fp);
}
?>
Aber es kommt wieder das gleiche raus.:confused: :dontknow:
penizillin 29-03-2007, 00:33 weil es unfug ist. komm, lies meine antwort noch mal, denk über sie nach. fang schrittweise an. erkläre was du machst.
Sorry ich bin zu dämlich dafür:(
Ich möchte doch nur das name und score ausgebländet wird.
Ich habe das gelesen was du geschrieben hast weis aber nicht damit anzufangen ich müsste jetzt 6 Monate php studieren und das Ding zu machen.
<?php
file_get_contents(Games/asteroids_scores.txt","r")
parse_str()
?>
parse_str wie kann ich die Dinger den zuweisen das ist ja sozusagen in einem Wort geschrieben.
&name1=alex&score1=1480&name2=asteroids&score2=0
penizillin 29-03-2007, 00:55 schau dir die beispiele bei php.net zu _beiden_ funktionen an. ... ich müsste jetzt 6 Monate php studieren und das Ding zu machen. absolut richtig.
ghostgambler 29-03-2007, 01:00 Original geschrieben von rcfman
Ich möchte doch nur das name und score ausgebländet wird.
:{ :{ :{
http://www.duden.de/suche/index.php?begriff=ausblenden&bereich=mixed
@ghostgambler
Super, dafür kriegst du einen Orden verliehen.
penizillin 29-03-2007, 01:09 und dir wird direkt geholfen. du solltest manual lesen, dort gibt es anschauliche beispiele.
Also das hab ich schon:
<?php
$content=file_get_contents("Games/asteroids_scores.txt");
echo $content; // value
?>
penizillin 29-03-2007, 01:10 super, geht doch! und jetzt noch parse_str().
gruenspan 29-03-2007, 01:13 Original geschrieben von rcfman
Ich weis garnicht wo ich es hinsetzen soll.
So etwa:
<?php
$fp = explode("Games/asteroids_scores.txt","r");
if ($fp)
{
while(!feof($fp))
{
$text = fgets($fp);
echo"$text";
}
fclose($fp);
}
?>
Wie wäre es, wenn Du es mal mit $text versuchst?!
...viel zu spät :(
Also das mit parse kapiere ich einfach nicht.
Wozu es dienen soll und wie es mir helfen kann :confused:
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
penizillin 29-03-2007, 01:21 na stell dir vor, in $str steht dein dateiinhalt.
wärst du nicht auch scharf darauf zu erfahren, was wohl in $output stünde?
penizillin 29-03-2007, 02:14 na dann bin ich mal auf deine lösung gespannt...
Ja das Problem ist das er bis unendlich Strings ausgibt. Gibt es eine Funktion auf bestimmte Anzahl von Zeilen zu begrenzen?
<?php
$content=file_get_contents("Games/asteroids_scores.txt");
$content = str_replace("&name1", "", $content );
$content = str_replace("=", "", $content );
$content = str_replace("&name2", "<br>", $content );
$content = str_replace("&name3", "<br>", $content );
$content = str_replace("&name4", "<br>", $content );
$content = str_replace("&name5", "<br>", $content );
$content = str_replace("&name6", "<br>", $content );
$content = str_replace("&name7", "<br>", $content );
$content = str_replace("&name8", "<br>", $content );
$content = str_replace("&name9", "<br>", $content );
$content = str_replace("&name10", "<br>", $content );
$content = str_replace("&score1", " : ", $content );
$content = str_replace("&score2", " : ", $content );
$content = str_replace("&score3", " : ", $content );
$content = str_replace("&score4", " : ", $content );
$content = str_replace("&score5", " : ", $content );
$content = str_replace("&score6", " : ", $content );
$content = str_replace("&score7", " : ", $content );
$content = str_replace("&score8", " : ", $content );
$content = str_replace("&score9", " : ", $content );
$content = str_replace("&score10", " : ", $content );
echo substr($content,0,95) ;
?>
ist ja 'ne Superlösung, und wenn die Datei 10.000 Einträge hat, dann viel Vergnügen beim Tippen :o
ich müsste jetzt 6 Monate php studieren und das Ding zu machen.
ich hate keine 6 Wochen dafür gebraucht :dontknow:
hehe, neat :D
Das spaghettimonster hat wieder zu geschlagen. Der OP wird
es mal zu was bringen in diesem bereich. Er hat einen messerscharfen
verstand und die fähigkeit probleme zu abstrahieren und selbständig
einen adäquaten lösungsweg zu erarbeiten, der dann zu einem
optimalen ergebnis führt. Und wenn er in 3 jahren dann die
ersten kontrollstrukturen gemeistert hat, wird er hingehen und
sein meisterstück vollenden.
go rcfman, go rcfman.
greets
@closure
lol jetzt verwirr ihn nich noch mit Kontrollstrukturen
Kann man einer ein Tip giben?!
Bitte.
penizillin 29-03-2007, 15:13 noch mal scharf überlegen, was ich mit parse_str() gemeint habe.
Ich will ja nicht alle 10.000 Einträge ausgeben es sollen lädiglich die ersten 10 ausgegeben werden.
penizillin 29-03-2007, 15:21 und?
Ich kapiere es nicht also ich hole die Textdatei
$content=file_get_contents("Games/asteroids_scores.txt");
Teile die mit
parse_str($content);
Aber in was soll ich denn teilen?
Wie sage ich „&name“ böse nicht schreiben, „=“ böse nicht schrieben?
Und dann gleichzeitig jeweils mit neue Zeile anfangen.
Und wie sage ich wo im Text er die Teilung einfügen kann?
Überall steht:
<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first; // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz
parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
?>
Aber kann ich doch gar nicht anwenden bei mir.
:confused:
penizillin 29-03-2007, 15:43 ich habe dich schon mal gefragt, doch du hast mir nicht geantwortet: weißt du, was ein array ist? hast du im manual nachgeschlagen, was print_r() macht?
Ei, ei, ei penizillin du hast ja eine engelsgeduld.
@OP parse_str gibt dir ein assoziatives array zurück.
So ein array ist eine menge von schlüssel-wert-paaren.
Wenn dein string also so aussieht:
$str = "&name1=alex&score1=1480&name2=asteroids&score2=0";
Und du jetzt parse_str darauf anwendest erhältst du ein
assoziatives array der form:
Array(
"name1" => "alex",
"score1" => 1480,
"name2" => "asteroids",
"score2" => 0
)
Jetzt siehst du schon dass deine schlüssel einem schema folgen.
Sie bestehen nämlich immer aus entweder "name" oder "score" mit
einem angehängten index von 1 ... n.
Du interessierst dich jetzt wiederum für eine assoziation in der
art dass name-einträge mit score-einträgen gleichen indexes in
beziehung gesetzt werden. Wie könnte man das wohl erreichen?
for($index =1;$index <= count($content) / 2; $index++){
//bitte ausfüllen
//HINWEIS bei den schlüsseln handelt es sich um strings
}
greets
[edit]
fehler nach hinweis von penizillin entfernt.
Das ist ja klar aber die Einträge bleiben ja nicht immer gleich
"name1" => "alex",
"score1" => 1480,
"name2" => "asteroids",
"score2" => 0
Es werden in der Textdatei immer neue Namen und Punktestendende gespeichert
So müsste ich ja jedem Namen und Punktestand manuell eingeben, das würde dann auch mit html funktionieren
penizillin 29-03-2007, 16:10 ...aber der erste name wird doch immer unter "name1" erreichbar sein? und seine punktezahl unter "score1". richtig?
Hi,
[edit]
öhm doch nicht
greets
penizillin 29-03-2007, 16:13 closure, komm, lass ihn doch den letzten schritt machen :) wieso denn bis count($c)-1? bei 100 elementen im array gibts nur 50 "highscores" ;)
ich hatte das geschrieben bevor eure letzten beiden kommentare
kamen und da sah es noch so aus als würde es mehr als einen
schritt brauchen bis er so weit ist.
Ich editiers mal raus auch wenn ich glaub das es zu spät ist.
greets
Original geschrieben von rcfman
Wie sage ich „&name“ böse nicht schreiben, „=“ böse nicht schrieben?
Sowas sagst du am besten gar nicht - es sei denn, du möchtest ein Diplom im Fach Kauderwelsch machen.
Original geschrieben von penizillin
wieso denn bis count($c)-1? bei 100 elementen im array gibts nur 50 "highscores" ;)
Absolut richtig, ich weiss auch nicht was mich da geritten hat. :)
Eben doch zeit für feierabend.
greets
Egal, lassen wir das, ich merke langsam bin zu dumm dafür.
Gehe lieber wieder an meinen Photoshop :(
|
|