
126594
25.01.2017
TXT Datei auslesen und bestimmte Zeilen in Variable setzen
Hallo zusammen,
vorweg muss ich sagen, ich bin (bis jetzt) absoluter Neuling was PHP angeht.
Ich will aus einer TXT Datei ein paar Zeichenfolgen finden und den nachfolgenden Text als Variable setzen.
Um genau zu sein, will ich u.a. die Zeile, die mit "Strasse" beginnt finden und den nachfolgenden Text (Strassennamen und Hausnummer) in die variablen $strasse und $hausnr speichern. Das gleiche noch mit der Zeile "Stadt".
Ich hab jetzt schon ein wenig mit dem Befehl preg_match experimentiert. Komme aber leider nicht zum gewünschten Erfolg.
Wäre super, wenn mir hier jemand helfen (und villeicht auch wa in ein paar Sätzen erklären) könnte ;)
Vielen Dank euch schon mal im voraus.
Viele Grüße Markus!
vorweg muss ich sagen, ich bin (bis jetzt) absoluter Neuling was PHP angeht.
Ich will aus einer TXT Datei ein paar Zeichenfolgen finden und den nachfolgenden Text als Variable setzen.
Um genau zu sein, will ich u.a. die Zeile, die mit "Strasse" beginnt finden und den nachfolgenden Text (Strassennamen und Hausnummer) in die variablen $strasse und $hausnr speichern. Das gleiche noch mit der Zeile "Stadt".
Ich hab jetzt schon ein wenig mit dem Befehl preg_match experimentiert. Komme aber leider nicht zum gewünschten Erfolg.
Wäre super, wenn mir hier jemand helfen (und villeicht auch wa in ein paar Sätzen erklären) könnte ;)
Vielen Dank euch schon mal im voraus.
Viele Grüße Markus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 327473
Url: https://administrator.de/forum/txt-datei-auslesen-und-bestimmte-zeilen-in-variable-setzen-327473.html
Ausgedruckt am: 23.04.2025 um 02:04 Uhr
11 Kommentare
Neuester Kommentar
Moin,
der Ansatz mit regular expressions zu arbeiten ist schon einmal gut. Hier kannst du damit ein wenig rumspielen. Zur Syntax findest du zu Hauf Informationen im Netz - musst selbst mal gucken, welche Seite dir zusagt.
Gruß Krämer
Beispiel zum Einstieg:
der Ansatz mit regular expressions zu arbeiten ist schon einmal gut. Hier kannst du damit ein wenig rumspielen. Zur Syntax findest du zu Hauf Informationen im Netz - musst selbst mal gucken, welche Seite dir zusagt.
Gruß Krämer
Beispiel zum Einstieg:
Straße: Lange Straße 30
^Straße: (.*) (.*)$
Full match 0-23 `Straße: Lange Straße 30`
Group 1. 8-20 `Lange Straße`
Group 2. 21-23 `30`

Hi.
Hier mal ein einfaches Beispiel für Anfänger:
Beispiel-Texdatei:
Code
Ergebnis:
Hier noch die Erläuterung zum Regex Pattern:
Gruß mik
Hier mal ein einfaches Beispiel für Anfänger:
Beispiel-Texdatei:
Bsakjsldfjaf
sdf
sdfsdfasdfdsfs
Strasse Berliner Ring 77-88b
Bljsdflkjsdfölksf
// Dateiinhalt auslesen
$content = file_get_contents("test.txt");
//Match mit Submatches für Straße und Nr.
$result = preg_match("/^Strasse (.*) (.*)/mi",$content,$match);
// Wenn der Regex zutrifft dann gebe die Submatches des matches aus.
if ($result){
echo "Strasse: " . $match[1] ."<br />";
echo "Nr: " . $match[2] . "<br />";
}else{
echo "Kein Treffer"
}
Strasse: Berliner Ring
Nr: 77-88b
Hier noch die Erläuterung zum Regex Pattern:
Options: Case insensitive; Exact spacing; Dot doesn’t match line breaks; ^$ match at line breaks; Greedy quantifiers
Assert position at the beginning of a line «^»
Match the character string “Strasse ” literally «Strasse »
Match the regex below and capture its match into backreference number 1 «(.*)»
Match any single character that is NOT a line break character «.*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match the character “ ” literally « »
Match the regex below and capture its match into backreference number 2 «(.*)»
Match any single character that is NOT a line break character «.*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Zitat von @131381:
Hi.
Es ist nicht falsch - es ist nur ungenügend - sprich keine r...l v...e Komplettlösung. Mein Vorschlag war nur als Einstieg und vor allem für die verlinkte Seite gedacht.Hi.
^Straße: (.*) (.*)$
Ist natürlich falschPS: Schön das du dein falsches Pattern so transparent geändert hast...

^Strasse ([^\r\n]+) ([^\r\n]+)
Funktioniert auch ist hier nur unnötig wenn man Flag s nicht setzt, deswegen Änderung. War grad ne andere Baustelle.
Jepp, das ist dann seine Hausaufgabe das für sich zu definieren und welche Varianten er unterstützen möchte.
Könnte man z.B. in der Straße alle Zeichen ohne Zahlen nehmen und im Nummernmatch auch Spaces zulassen.
Könnte man z.B. in der Straße alle Zeichen ohne Zahlen nehmen und im Nummernmatch auch Spaces zulassen.

"/^Strasse ([^\d]+) ([\da-z\-\ ]+)/mi"