ERLEDIGT
NEIN
NEIN
ANTWORTEN
15
15
ZUGRIFFE
775
775
EMPFEHLEN
-
16.04.12 17:26 #1
Rookie
- Registriert seit
- Apr 2012
- Ort
- Greifswald, Germany, Germany
- Beiträge
- 7
Hallo ich brauche Hilfe bei folgendem Problem:
Ich möchte mehrere Textdateien mit einem Script auslesen .
Die Textdateien Sind Immer folgendermaßen aufgebaut:
LINKSA:
LinksA1
LinksA2
LinksA3
LINKSB
LinksB1
LinksB2
LinksB3
LINKSC
LinksC1
LinksC2
LinksC3
LINKSD
LinksD1
LinksD2
LinksD3
Ich möchte diese nun so auslesen dass ich quasi jedesmal den 1./2./3. Link in einem Array habe
und diese dann per Echo ausgeben kann.
Also echo : Blabla $LinksA[0] blubb blubb $LinksB[0] bli bla blu $LinksC[0] und $LinksD[0]
Ich habe leider große Probleme mit dem explode und komme da auf keinen Grünen Zweig.
Besonderheit ist noch, dass die Anzahl der Links je nach Txt Datei variiert. Also es je nach Textdatei auch mal bis LinksA20 gehen kann.
Wäre über Hilfe dankbar. Bin verzweifelt
-
16.04.12 17:51 #2
Aber das Muster ist wie folgt:
- Überschrift
- drei Links
- Leerzeile
- (fang wieder bei Punkt 1 an)
Ich mag:
- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
16.04.12 17:59 #3
Rookie
- Registriert seit
- Apr 2012
- Ort
- Greifswald, Germany, Germany
- Beiträge
- 7
Ja genau. Nur es sind nicht immer 3 Links. Das sollte über eine kleine Veränderung im Skript halt anpassbar sein.
LinksA , LinksB etc. haben aber immer die gleiche Anzahl an Unterpunkten ( hier halt 3)
-
16.04.12 17:59 #4
Nachdem Du die Datei eingelesen hast.. Wonach suchst Du denn, um die Einträge zu unterscheiden? ich würde dem Trenner/der Überschrift etwas Eindeutiges geben, zB zwei Rauten am Anfang, damit wir für den Code einen sinnvollen Unterscheider geben können für
(A) das ist ne Überschrift
(B) hier beginnt ein neues Array
Beispiel-Textdatei
Interessant ist, mit welchem Texteditor die Textdatei geschrieben wurde, ist das Zeilenende (besser Zeilenumbruch) mit \n oder mit \r\n gesetzt? Sollte man diese noch löschen?Code :1 2 3 4 5 6 7 8 9 10 11
##LINKSA www.phreekz.de www.dslr-kleinanzeigen.de www.xbmc.org ##LINKSB www.google.de www.tutorials.de ##LINKSC www.fotografie.de www.cinema.de www.coding.de
Leerzeichen betrachte ich nicht und das Wegnehmen der Rauten für eine "schönen" Trennertitel genauso wenig (auch nicht das Wegkürzen der Zeilenumbrüche), das kannst Du selbst einbauenPHP-Code:<?php
$array = file("/textdatei.txt");
$linkarray=array();
$index=-1;
foreach($array as $row)
{
if(strpos($row,"##")!=0)
{
$index++;
$linkarray[$index]=array();
$linkarray[$index][0]=$row;
$linkarray[$index][1]=array();
}
else
{
$linkarray[$index][1][]=$row;
}
}
var_dump($linkarray);
UND der Code ist jetzt ohne Test hingekritzelt - es könnten Fehler drin sein..
mfg chmeeGeändert von chmee (16.04.12 um 19:24 Uhr)
Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
16.04.12 18:16 #5
Rookie
- Registriert seit
- Apr 2012
- Ort
- Greifswald, Germany, Germany
- Beiträge
- 7
Das gibt nur leere Arrays aus.
-
16.04.12 18:58 #6
Das sollte so funktionieren:
Wenn nicht, beantworte noch folgende Fragen:PHP-Code:if(strpos($row,"##") ==0)
Wie sieht denn deine Textdatei aus? Ist sie im richtigen Verzeichnis?Tutorials.de Blog: Stacks und Queues
Wie wird Dir schneller geholfen?
*Bitte nur den Codeausschnitt posten. Keiner mag sich durch hunderte Zeilen Code wühlen.
*Code in Tags setzen, dadurch aktiviert man Syntaxhighlighting. [php][/php] [java][/java]...
*Code formatieren! Einrücken und Absätze machen erhöhen die Lesbarkeit ungemein, nicht nur für uns, auch für Dich
*Den Fehler klar beschreiben. Mit "funktioniert nicht" weiß keiner was anzufangen.
-
16.04.12 19:04 #7
In diesem Fall muss es sogar typensicher sein, denn kein Fund würde auch als 0 oder false interpretiert werden, somit also
(und der Dateiname muß entweder ohne slash oder mit ./ angegeben sein. sorry.)PHP-Code:strpos($row,"##")===0
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
16.04.12 19:44 #8
Rookie
- Registriert seit
- Apr 2012
- Ort
- Greifswald, Germany, Germany
- Beiträge
- 7
Das ist jetzt das Ergebnis und leider immer noch nicht was ich möchte.PHP-Code:array(11) { [0]=> array(2) { [0]=> string(9) "##LINKSA " [1]=> array(0) { } } [1]=> array(2) { [0]=> string(15) "www.phreekz.de " [1]=> array(0) { } } [2]=> array(2) { [0]=> string(26) "www.dslr-kleinanzeigen.de " [1]=> array(0) { } } [3]=> array(2) { [0]=> string(13) "www.xbmc.org " [1]=> array(0) { } } [4]=> array(2) { [0]=> string(9) "##LINKSB " [1]=> array(0) { } } [5]=> array(2) { [0]=> string(14) "www.google.de " [1]=> array(0) { } } [6]=> array(2) { [0]=> string(17) "www.tutorials.de " [1]=> array(0) { } } [7]=> array(2) { [0]=> string(9) "##LINKSC " [1]=> array(0) { } } [8]=> array(2) { [0]=> string(18) "www.fotografie.de " [1]=> array(0) { } } [9]=> array(2) { [0]=> string(14) "www.cinema.de " [1]=> array(0) { } } [10]=> array(2) { [0]=> string(13) "www.coding.de" [1]=> array(0) { } } }
Die Textdatei sieht so aus wie oben im vorigen Code-Post beschrieben.
-
16.04.12 20:01 #9
PHP Nimmt es mit den Arraydeklarationen nicht so genau @chmee.
Daher geht auch folgendes (erspart einem die leeren Arrayeinträge):
Wo ist denn jetzt dein Problem?PHP-Code:<?php
$array = file("/textdatei.txt");
$linkarray = array(); //auch nicht nötig, aber gehört zu schönem programmierstil dazu, finde ich
$index=-1;
foreach($array as $row)
{
if(strpos($row,"##") === 0)
{
$index++;
$linkarray[$index][0]=$row;
}
else
{
$linkarray[$index][1][]=$row;
}
}
Du hast doch alles in dem Array was du brauchst. Du kannst es sogar direkt in der Schleife ausgeben lassen.Geändert von timestamp (16.04.12 um 23:18 Uhr) Grund: chmees anmerkung eingefügt
Tutorials.de Blog: Stacks und Queues
Wie wird Dir schneller geholfen?
*Bitte nur den Codeausschnitt posten. Keiner mag sich durch hunderte Zeilen Code wühlen.
*Code in Tags setzen, dadurch aktiviert man Syntaxhighlighting. [php][/php] [java][/java]...
*Code formatieren! Einrücken und Absätze machen erhöhen die Lesbarkeit ungemein, nicht nur für uns, auch für Dich
*Den Fehler klar beschreiben. Mit "funktioniert nicht" weiß keiner was anzufangen.
-
16.04.12 20:02 #10
Wie Du es möchtest, kannst Du Dir selbst zusammencoden. Wir haben Dir ein simples und funktionierendes Beispiel gebracht. Wir sind aber nicht dazu da, Wünsche zu befolgen
Hilfe zur Selbsthilfe!
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
16.04.12 21:22 #11
Rookie
- Registriert seit
- Apr 2012
- Ort
- Greifswald, Germany, Germany
- Beiträge
- 7
Irgendwa stimmt da aber nicht. wenn ich jetzt einfach mal print $row mache gibt er mir "www.coding.de" aus. das ist aber die letzte zeile.
Ihr sollt keine Wünsche befolgen sondern mir einfach bei meiner Frage helfen. Meine Selbsthilfe dauert nun schon Stunden darum bin ich hier!
-
16.04.12 21:46 #12
Das fertige Array heisst ja auch $linkarray - Aufbau sieht man in der Ausgabe mittels var_dump()
mfg chmeeMein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
16.04.12 22:08 #13
Rookie
- Registriert seit
- Apr 2012
- Ort
- Greifswald, Germany, Germany
- Beiträge
- 7
Achso danke. Jetzt gibt er mir bei var_dump($linkarray); zwar alles aus aber bei var_dump($linkarray[1]); gibts wieder nur NULL
Hier mal die Struktur:
PHP-Code:array(1)
{ [-1]=> array(1)
{ [1]=> array(11)
{
[0]=> string(9) "##LINKSA "
[1]=> string(15) "www.phreekz.de "
[2]=> string(26) "www.dslr-kleinanzeigen.de "
[3]=> string(13) "www.xbmc.org "
[4]=> string(9) "##LINKSB "
[5]=> string(14) "www.google.de "
[6]=> string(17) "www.tutorials.de "
[7]=> string(9) "##LINKSC "
[8]=> string(18) "www.fotografie.de "
[9]=> string(14) "www.cinema.de "
[10]=> string(13) "www.coding.de" } } }
EDIT: Ahh okay. die Struktur ist mir nun klar.
Jetzt aber noch folgendes Problem: Wie mache ich es dass die Links unter ##LINKSC ein eigenes Array bekommen ?Geändert von flippar (16.04.12 um 22:22 Uhr)
-
16.04.12 22:33 #14
Du benutzt das Script von timestamp. Änder, wie von mir beschrieben in der Abfrage != nach ===
Dann ist es so wie von mir angedacht, dann sieht die Struktur nämlich so aus:
Dann hast Du mitCode :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
$linkarray => array(3) [0]=> array(2) [0][0]=> "##LINKSA" [0][1]=> array(3) [0]=> "www.phreekz.de" [1]=> "www.dslr-kleinanzeigen.de" [2]=> "www.xbmc.org" [1]=> array(2) [1][0]=> "##LINKSB" [1][1]=> array(2) [0]=> "www.google.de" [1]=> "www.tutorials.de" [2]=> array(2) [2][0]=> "##LINKSC" [2][1]=> array(3) [0]=> "www.fotografie.de" [1]=> "www.cinema.de" [2]=> "www.coding.de"
Die Anzahl der Listen. MitPHP-Code:echo count($linkarray);
Hast Du den Namen der Liste 0 und inPHP-Code:echo $linkarray[0][0];
steckt das Array der Links zu 0.PHP-Code:var_dump($linkarray[0][1]);
Aufgeräumter gehts wohl kaum. Mit zwei foreach-Schleifen ist das Ding wieder in jegliche html-Auflistung ausgeworfen.
mfg chmeeGeändert von chmee (17.04.12 um 08:50 Uhr) Grund: len() zu count()
Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
Benutzt den DANKE-Knopf oder bewertet den Beitrag
"GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
-> Regexp <- -> php <- -> Javascript <-
-
17.04.12 00:42 #15
Rookie
- Registriert seit
- Apr 2012
- Ort
- Greifswald, Germany, Germany
- Beiträge
- 7
Okay hab jetzt soweit alles. Eine letzte Frage noch:
Zur Erklärung : In $ULlinksArray sind die Links als Arrays gespeichert. Sie werden gezählt.PHP-Code:$anzahl = count($ULlinksArray);
$i = 0 ;
while ($i <= $anzahl):
echo $ULlinksArray['$i];
echo "<br>"
$i++;
endwhile;
Nun möchte ich dass alle einzeln in einer While Schleife ausgegeben werden.
Also es quasi so aussieht:
Bis quasi alle Links ausgegeben sindPHP-Code:echo $ULlinksArray[0];
echo "<br>"
echo $ULlinksArray[1];
echo "<br>"
echo $ULlinksArray[2];
echo "<br>"
echo $ULlinksArray[3];
echo "<br>"
Ähnliche Themen
-
Textdatei auslesen
Von Peter_Lustig im Forum Flash PlattformAntworten: 5Letzter Beitrag: 02.01.09, 13:59 -
auslesen einer textdatei und in eine neue textdatei schreiben
Von prinzessin4444 im Forum C/C++Antworten: 3Letzter Beitrag: 10.12.08, 12:01 -
Textdatei auslesen
Von ojamaney im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 08.01.08, 01:57 -
Textdatei auslesen
Von LordNikkon im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 3Letzter Beitrag: 12.08.04, 10:28 -
Textdatei auslesen
Von Franz im Forum PHPAntworten: 1Letzter Beitrag: 21.04.02, 17:10




Zitieren

Login