Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

? fragte in Computer & InternetProgrammierung & Design · vor 1 Jahrzehnt

bestimmte Zeile ausgeben PHP?

so dan bin ich wieder,

und mein latein ist in italien und redet japanisch mit einem spanisch sprechenden Engländer.

gg

kleiner scherz am rande :D

wie wie kann ich in PHP eine bestimmte Zeile auslesen lassen und Diese dann noch zerlegen

BsP.

Meine Datei:

Hier Stehen alle Änderungen beginnent ab Zeile 3 (php inepretiert 2)

TITEL(DATUM) | ÜBERSCHRIF | BESCHREIBUNG | LINKTITEL | LINK |

31.12.2010|Die neue Webseite wird Online gestellt|es gibt ein neues Design und alles ist in PHP :=)|

und die Php Datei:

<?php

$datei = file("data/info.inc.txt");

foreach($datei AS $ausgabe)

{

$wert = explode("|", $ausgabe);

}

$ausgabe ='<div class="box_info" title="am '.$wert[0].'">

<table border="0">

<tr>

<td style="width:500px;">

<b>'.$wert[1].':<br> <i style="color:#999;">-'.$wert[3].'-</i><br>

<a href="'.$wert[4].'">'.$wert[5].'</a><br>

</b>

</td>

<td>

<b ><i style="color:#999;">gepostet am: </i>'.$wert[0].'<br>

</b>

</td>

</tr>

</table>

</div>';

echo $ausgabe;

?>

das Problem ist ich möchte NUR zeile 2 ausgeben und zeile 1bzw 0 soll ignoriert werden. und später wenn mehr inhalt da ist soll nur zeile 2-5 ausgegeben werden und 5-xy auch ignoriert werden

nur wie schaff ich des??

PHP gibt mir immer alle Zeile aus.

hoffe jemand kann mir ein TipP geben

mfg

2 Antworten

Bewertung
  • vor 1 Jahrzehnt
    Beste Antwort

    <?php

    $datei = file("ptext.wpd");

    $ii = 0;

    foreach($datei AS $ausgabe)

    {

    $ii++;

    if (2 <= $ii and $ii <= 5 and $ausgabe != '')

    {

    $wert = explode("|", $ausgabe);

    $ausgabe0 = '<div>'.$wert[0].'</div>';

    $ausgabe1 = '<div>'.$wert[1].'</div>';

    $ausgabe2 = '<div>'.$wert[2].'</div>';

    echo $ii . $ausgabe0 . $ausgabe1 . $ausgabe2;

    }

    }

    ?>

    So ist das Prinzip der Zerlegung der Zeilen 2 bis 5.

    Du mußt dann natürlich im Loop das "echo" weglassen und die Variablen ausgabe0/1/2 mit $ii indizieren und in deinem <Table> - Konstrukt einsetzen.

  • vor 1 Jahrzehnt

    Dein Problem ist klassisch - Auslesen einer CSV-Datei.

    Dafür gibt's in PHP auch die Funktion fgetcsv().

    http://de.php.net/manual/de/function.fgetcsv.php

    Statt dem standardmäßigen Komma gibst Du als Delimiter "|" an. In dem Beispiel aus der Hilfe:

    while ( ($data = fgetcsv ($handle, 1000, '|')) !== FALSE )

    Um die erste Zeile, die beispielsweise Spaltenüberschriften enthält, zu ignorieren, liest Du einfach eine Zeile aus und ignorierst sie bzw. nimmst die Rückgabe nur als if-Bedingung für die Ausführung des nachfolgenden while-Konstrukts:

    if(fgetcsv ($handle, 1000, '|') !== FALSE )

    while ( ($data = fgetcsv ($handle, 1000, '|')) !== FALSE )

    { echo ...

    }

    fgetcsv hat auch den Vorteil, daß Du Strings in Enclosures einschließen kannst, z.B.:

    `TITEL(DATUM)` | `ÜBERSCHRIFT` | `BESCHREIBUNG` | `LINKTITEL` | `LINK`

    `31.12.2010` | `Webseite geht online` | `über Smilies mit Pipes ("|") :o|` | `http:...`

    Auslesen mit:

    if( ($handle = fopen( "pfad/dateiname.csv", "r" )) !== FALSE )

    if( fgetcsv($handle, 1000, '|', '`') !== FALSE )

    while ( ($data = fgetcsv ($handle, 1000, '|', '`')) !== FALSE )

    { echo ...

    }

    ____

    Oder Überschriften in <th> ausgeben und Daten in <td>

    if( ($handle = fopen( "pfad/dateiname.csv", "r" )) !== FALSE )

    { if( ($data = fgetcsv($handle, 1000, '|', '`')) !== FALSE )

    { echo '<table>' . PHP_EOL . '<tr>';

    foreach($data as &$col)

    echo "<th>$col</th>";

    echo '</tr>' . PHP_EOL;

    while ( ($data = fgetcsv ($handle, 1000, '|', '`')) !== FALSE )

    { echo '<tr>';

    foreach($data as &$col)

    echo "<td>$col</td>";

    echo '</tr>' . PHP_EOL;

    }

    echo '</table>' . PHP_EOL;

    }

    else

    echo '<p>Datei enthält keine Informationen</p>' . PHP_EOL;

    }

    else

    echo '<p>Fehler beim Öffnen der Datei.</p>' . PHP_EOL;

    ___

    Hier nochmal als formatierter Quelltext:

    http://pastebin.com/8zy3a2DY

    und mit Ausgabe einer Zeilennummer:

    http://pastebin.com/9FypZVus

    __

    "und 5-xy auch ignoriert werden" - ok, dann die while-Zeile so:

    $count = 3; /* Anzahl DATENzeilen (unabhängig von Überschriften) */

    while ( $count-- && (($data = fgetcsv ($handle, 1000, '|', '`')) !== FALSE) )

    (Gibt Zeilen 2, 3, 4 aus, bei Zählung Überschriften = 1)

    __

    PS:

    Bei mehrzeiligen Ausgaben mit Variablen und Anführungszeichen probiere mal die HereDoc-Notation aus:

    echo <<< _ENDE_DES_STRINGS_

    <table style="border: 1px solid red;">

    <tr style="color: green;"> <td>$zelle[0]</td> <td>zelle[1]</td> </tr>

    </table>

    _ENDE_DES_STRINGS_;

Haben Sie noch Fragen? Jetzt beantworten lassen.