online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon herald443 vom 07.11.2020, 13:30 Options

php: textdatei durchsuchen und trefferzeile ausgeben

Guten Tag,

ich hoffe jemand kann mir bei folgendem Problem weiterhelfen:

ich möchte mit PHP eine XML datei nach einem string durchsuchen. und dann nur die zeile ausgeben, in welcher der string gefunden wurde.

wie kann man das realisieren?

vielen dank schonmal.

mfg
herald443


Antwort schreiben

Antwort 1 von son_quatsch vom 07.11.2020, 13:56 Options

Das kann man schnell und schmutzig realisieren oder aber auch aufwendig und umsichtig.

Reden wir von kleinen XML-Dateien, die höchstens mal 1MB groß sind? Dann muss die Lösung nicht sonderlich klug sein. Andernfalls ist zu überlegen, wie resourcenschonend das ganze sein soll (gesamte Datei auf einmal einlesen VS streckenweise einlesen; Zeilenumbrucherkennung durch RegExp VS selbst Zeichen suchen)...

Antwort 2 von herald443 vom 07.11.2020, 14:38 Options

hallo,

vielen dank schonmal, dass du dich dem thema angenommen hast.

da die xml-files nur sehr klein sind, (wenige KB) können wir das gerne schnell und schmutzig über die bühne bringen ;9

Danke,

herald443

Antwort 3 von herald443 vom 09.11.2020, 11:48 Options

Hallo,

ähm? hast du mich evtl vergessen ;)

*push*

danke

herald443

Antwort 4 von Woo vom 09.11.2020, 19:40 Options

Moin!

Eigentlich ganz simpel:

$suchbegriff = "suchbegriff";

// Datei handle öffnen
$handle = fopen("text.xml","r");

// Solange nicht EOF, Datei lesen
while (!feof($handle)) {
$zeile = fgets($handle, 4096);


$gefunden = stristr($zeile, $suchbegriff);

if ($gefunden != "") {
echo $gefunden;
}

}
// Datei Handle schließen
fclose($handle);


Die Variablen müssen angepasst werden, aber hoffe, das gibt dir einne kleinen Einblick in die Funktionsweise.

Antwort 5 von son_quatsch vom 10.11.2020, 10:21 Options

Zitat:
ähm? hast du mich evtl vergessen ;)
Nicht wirklich, bin halt nur werktags hier anwesend :-)

$suchtext= 'find mich';

// Datei in ein Array lesen
if ( $a= file( 'datei.xml' )=== false ) die( 'Datei konnte nicht gelesen werden!' );

// Jede Zeile durchlaufen
foreach ( $a as $k=> $v ) {
  // Gefunden?
  $f= stripos( $v, $suchtext );
  if ( $f!== false ) {
    // aktuelle Zeile und gefundene Position ausgeben
    echo 'Zeile #'. $k. ' Spalte #'. ($f+ 1). ': '. htmlspecialchars( $v ). "<br />\n";

    // nur einen Treffer pro Datei zeigen
    break;
  }
}


Der Code findet nur einen Treffer für die Datei. Sollen mehrere angezeigt werden, einfach das break; entfernen. Sollen auch mehrere Treffer innerhalb derselben Zeile gefunden werden, müsste der Code leicht erweitert werden.

Antwort 6 von herald443 vom 10.11.2020, 17:12 Options

ah, vielen vielen dank!

hat super funktioniert! dank euch beiden.

mfg
herald443

Ähnliche Themen

Mit PHP textdatei online bearbetien
manwe  04.06.2007 - 127 Hits - 6 Antworten

PHP Problem - Text aus Datenbank auslesen wo PHP Code drinsteht?!
Kuscheltier  10.11.2007 - 127 Hits - 3 Antworten

Variable durchsuchen
Uesch  25.02.2008 - 34 Hits - 7 Antworten

Eingabe eines Formularfeldes in PHP speichern und ausgeben lassen...
vaeterlepeterle  02.09.2008 - 35 Hits - 13 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026