Datei auslesen

  • Hallo,


    ich habe eine Datei mit folgendem Inhalt:
    <!-- e --><a href="mailto:mail1@gmx.de">mail1@gmx.de</a><!-- e -->|...|...|
    <!-- e --><a href="mailto:mail2@gmx.de">mail2@gmx.de</a><!-- e -->|...|...|
    <!-- e --><a href="mailto:mail3@gmx.de">mail3@gmx.de</a><!-- e -->|...|...|


    Ich moechte die Mailadressen in eine Variable speichern (genau das ist meine Frage)
    und anschliessend jedem eine Mail schreiben.


    Gerd

  • Habe jetzt leider keine Zeit das lange zu erklären aber erklärt sich auch von allein, einfach oben bei $dateiname den Namen der .txt Datei rein und $inhalt_array beinhaltet dann pro Zeile ein Array welches jeweils die Elemente einer Zeile enthält, viel Spaß damit.


    Bei Problemen melde dich bitte, bin heut gegen 8 wieder da.


    PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br /><br />  $dateiname </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'name_der_datei.txt'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">  $handle </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> fopen </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$dateiname</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> r</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">  $i </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault">  while </span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> $inhalt </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> fgets </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$handle</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> 4096 </span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{<br /><br /></span><span class="syntaxdefault">    $i</span><span class="syntaxkeyword">++;<br /><br /></span><span class="syntaxdefault">    $inhalt_array</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'|'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $inhalt</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /><br /></span><span class="syntaxdefault">  fclose</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$handle</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">  print_r</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$inhalt_array</span><span class="syntaxkeyword">);<br /><br /><br /></span><span class="syntaxdefault">?><br /></span></span>


    Um dann damit eine Mail zu verschicken in einer for Schleife den Array durchlaufen und hier nachgucken wie das dann geht: PHP Kurs - Email mit PHP verschicken.

  • Das hatte ich uebrigens schon


    <?php
    $datei = "test.txt"; // Name der Datei
    $array = file($datei); // Datei in ein Array einlesen
    // Zeile 6 wird ausgegeben
    // (das Array fängt mit dem Zählen bei 0 an)
    echo $array[5];
    ?>


    Quelle: <!-- m --><a class="postlink" href="http://www.homepage-total.de/php/schreiben_lesen.php#ixzz0x4Wf1Mrf">http://www.homepage-total.de/php/schrei ... z0x4Wf1Mrf</a><!-- m -->


    mir geht es ja jetzt darum aus der Zeile
    <!-- e --><a href="mailto:mail1@gmx.de">mail1@gmx.de</a><!-- e -->|...|...


    nur die Email-Adresse zu haben.

  • ...und? .__.
    Dann bekommst du etwa so was:

    PHP
    <span class="syntaxdefault">array </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Emailadresse</span><span class="syntaxkeyword">@</span><span class="syntaxdefault">1.de<br />           </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> der 2</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">Wert der 1</span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> Zeile<br />           </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">...<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Emailadresse</span><span class="syntaxkeyword">@</span><span class="syntaxdefault">2.de<br />           </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> der 2</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">Wert der 2</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">Zeile<br />           </span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">...<br />...</span><span class="syntaxdefault"> </span>


    Da hast du doch alles, was du brauchst (=
    Dann musst du eben "Außenrum" arbeiten^^
    Hol dir einfach das raus, was du benötigst, beziehungsweise benutzt einfach nur das, was du benötigst, z.B. mit einer for-Schleife (=


    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">for(</span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> $i </span><span class="syntaxkeyword"><=</span><span class="syntaxdefault"> count</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$inhalt_array</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">++){<br /></span><span class="syntaxdefault">    mail</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$inhalt_array</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Betreff"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Meine Nachricht, z.B. \"Hallo Welt!\""</span><span class="syntaxkeyword">);<br />}</span><span class="syntaxdefault"> </span>


    (Mail()-Funktion, falls du die Parameter nicht genau kennst :) )


    PS: Wenn du wirklich überhaupt nicht damit klar kommen kannst, dass da auch noch andere Werte sind, müsstest du das ganze recht umständlich angehen =/
    Zumindest fällt mir gerade nur ein Recht umständlicher Weg ein^^

  • Ich will es am liebsten so haben:
    <!-- e --><a href="mailto:'mail1@gmx.de">'mail1@gmx.de</a><!-- e -->|...|...'
    Zeichen für Zeichen auf eine Variable schreiben, bis "|" der erste Trennstrich kommt.


    Kann doch nicht so schwer sein?
    Gerd

  • PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br /><br />  $dateiname </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'name_der_datei.txt'</span><span class="syntaxkeyword">;<br /><br />  </span><span class="syntaxdefault">$handle </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">fopen </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$dateiname</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">r</span><span class="syntaxkeyword">);<br /><br />  </span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">0</span><span class="syntaxkeyword">;<br /><br />  while ( </span><span class="syntaxdefault">$inhalt </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">fgets </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$handle</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">4096 </span><span class="syntaxkeyword">))<br />  {<br /><br />    </span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">++;<br /><br />    </span><span class="syntaxdefault">$inhalt_array</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'|'</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$inhalt</span><span class="syntaxkeyword">);<br /><br />    </span><span class="syntaxdefault">$emails</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">] = </span><span class="syntaxdefault">$inhalt_array</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">][</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];<br /><br />  }<br /><br />  </span><span class="syntaxdefault">fclose</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$handle</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">?><br /></span></span>


    Der Array "$emails" enthält jetzt alle E-Mailadressen.

  • Wenn du meine 2. Lösung nimmst (direkt über deinem Post) dann kannst du wie folgt vorgehen:


    PHP
    <span class="syntaxdefault"><br />  </span><span class="syntaxkeyword">for(</span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">1</span><span class="syntaxkeyword">; </span><span class="syntaxdefault">$i </span><span class="syntaxkeyword"><= </span><span class="syntaxdefault">count</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$emails</span><span class="syntaxkeyword">); </span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">++)<br />  {<br /><br />    print </span><span class="syntaxdefault">$emails</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">];<br /><br />  }<br /> </span><span class="syntaxdefault"></span>


    So würdest du Beispielsweise alle Emailadressen ausgeben.

  • Zitat von &quot;Basiii&quot;

    Wenn du meine 2. Lösung nimmst (direkt über deinem Post) dann kannst du wie folgt vorgehen:


    PHP
    <span class="syntaxdefault"><br />  for</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> $i </span><span class="syntaxkeyword"><=</span><span class="syntaxdefault"> count</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$emails</span><span class="syntaxkeyword">);</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">++)<br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">{<br /><br /></span><span class="syntaxdefault">    print $emails</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">];<br /><br /></span><span class="syntaxdefault">  </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> </span>


    So würdest du Beispielsweise alle Emailadressen ausgeben.


    Naja, das ausgeben von Array mittels for ist zwar möglich, aber man sollte hier lieber mit foreach arbeiten, denn wenn mal ein eintrag fehlt, kommt es schnell zu unschönen notices.


    PHP
    <span class="syntaxdefault"><br /></span><span class="syntaxkeyword">foreach(</span><span class="syntaxdefault">$emails </span><span class="syntaxkeyword">AS </span><span class="syntaxdefault">$mail</span><span class="syntaxkeyword">)<br />{<br />  print </span><span class="syntaxdefault">$mail</span><span class="syntaxkeyword">;<br />}<br /><br /> </span><span class="syntaxdefault"></span>
  • Zitat von &quot;Basiii&quot;

    Naja, das ausgeben von Array mittels for ist zwar möglich, aber man sollte hier lieber mit foreach arbeiten, denn wenn mal ein eintrag fehlt, kommt es schnell zu unschönen notices.


    ^^? sollte es dan nicht eher einfach ein leerstring sein als eine notice ? also je nach dem wie hoch das Error reporting steht ...

  • Zitat von &quot;R4Zz0R&quot;

    ^^? sollte es dan nicht eher einfach ein leerstring sein als eine notice ? also je nach dem wie hoch das Error reporting steht ...


    Bei deinem zitieren ist was schief gelaufen, das habe nicht ich geschrieben, sondern jemand anders.

  • Zitat von &quot;R4Zz0R&quot;

    ^^? sollte es dan nicht eher einfach ein leerstring sein als eine notice ? also je nach dem wie hoch das Error reporting steht ...



    Sollte an mich gehen,


    wenn du das Error reproting einfach runterschraubst, sieht man die fehler zwar nichtmehr, aber sind dennoch da, und da es hier nacher um Nicht gesetzte variablen geht, kann das im späteren programmverlauf probleme bereiten,


    bsp, du möchtest die daten in einer tabelle ausgeben, und hast 10 einträge drinn, und die IDs, (natürlich nur, wenn das array auch ein indiziertes ist)


    4-8 fehlen, hast nacher 2 leere Tabellen einträge, und 2 der einträge fehlen ganz.


    Zudem fangen automatisch generierte Indizierte Arrays meist bei 0 an, so fehlt der erste eintrag, und der vermeindlich letze ist leer.
    Bei foreach müsste man auf sowas auch nicht achten.


    Also, wenn schon For, dan nauch so.


    PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br />$array </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> array</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">4</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">6</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">7</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">8</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">9</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">10</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxdefault">$maenge </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> count</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$array</span><span class="syntaxkeyword">)-</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">;<br /><br />for(</span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> $maenge </span><span class="syntaxkeyword">>=</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">+=</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">)<br />{<br /><br /></span><span class="syntaxdefault">  echo $array</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">$i</span><span class="syntaxkeyword">].</span><span class="syntaxstring">"<br>"</span><span class="syntaxkeyword">;<br /><br />}<br /><br /></span><span class="syntaxcomment">// ausgabe  1 2 3 4 5 6 7 8 9 10<br /></span><span class="syntaxdefault">?></span> <br /><br /><br /></span>


    EDIT:
    (meine mit der oberen, die von razzor)
    Wenn ich das mit der oberen schleife mache, kommt folgendes bei raus


    2345678910
    Undefined offset: 10


    Zudem, wenn man ber der schleife nun in den körper volgendes schreiben würde


    $array[] = "noch eins";


    Würde daraus eine Endlosschleife entstehen, daher das zählen auserhalb des schleifenkopfs vornemen.





    Greetz TimTim


    und sorry, das ich teile erst nachgefügt habe.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!