php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.07.2008, 16:17  
Neuer Benutzer
 
Registriert seit: 04.07.2008
Beiträge: 4
PEcman befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Zeile aus Texdatei löschen

Hallo,

Ich bin ein absoluter Anfänger, mein Problem ist:

Ich habe eine Textdatei die so aussieht:

Test
Muster
Maier

Es soll eine bestimmte Zeile gelöscht werden und zwar durch Angabe von dem Inhalt.

Ich übergebe also mit Post aus einer anderen Seite z.B. Muster,
dann soll er Muster aus der Textdatei löschen, so das sie dann so aussieht.

Test
Maier

Ich habe schon zich Sachen probiert und komm auf keinen grünen Zweig.
Das beste Ergbins hab ich mit str_replace erreicht, allerdings ersetze ich damit nur einen Text durch nichts. Der Absatz, also die Leerzeile bleibt.

Kann mir wer ein kleines Script anbieten, das mir hilft?

Vielen Dank im Vorraus.
PEcman ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.07.2008, 16:30  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Bei der Ersetzung mußt Du das jeweilige Zeilenende berücksichtigen, unter Windows bspw. "\r\n" . Das macht die Leerezeile aus. Im einfachsten Falle ersetzt Du also so:
PHP-Code:
$fulltext_new str_replace ($suchbegriff "\r\n" '' $fulltext); 
Für generelles zeilenweises Arbeiten kann aber auch ein Weg über Arrays via
file () , str_replace () , implode () sinnvoll sein. Ist Geschmackssache.

Nachtrag: Andere Betriebssysteme oder Dateiformate benutzen u.U. andere Zeilenendzeichen. Wenn Du die Verwendung eines bestimmten Zeilenendzeichens nicht garantieren kannst, kann es nötig sein, einen regulären Ausdruck zu verwenden.

Btw: Willkommen im Forum!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--

Geändert von nikosch (04.07.2008 um 16:32 Uhr).
nikosch ist gerade online  
Alt 04.07.2008, 20:08  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Datei als Array einlesen:
PHP: file - Manual

Mit foreach durchlaufen und bei Treffer auf gleichen Wert, unset:
PHP: unset - Manual

Werte wieder zusammensetzen:
PHP: implode - Manual

Und in Datei zurueckschreiben:
PHP: file_put_contents - Manual
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline  
Alt 07.07.2008, 10:26  
Neuer Benutzer
 
Registriert seit: 04.07.2008
Beiträge: 4
PEcman befindet sich auf einem aufstrebenden Ast
Standard

Bei der Variante von nikosch funktioniert das mit \r\n nicht. Wenn ich nur \n mache bekomm ich wieder die Ausgabe mit Leerzeile.
Das ist ein Webpacket von 1und1 also Linux. Nebenbei, da läuft die PHP-Version 4.4.8.

Mein Script dazu:
PHP-Code:
<?php
$datei 
"datei.txt";
$kommentar file($datei);
$suchbegriff "muster";
 
// Daten löschen
$fulltext_new str_replace ($suchbegriff "\n" '' $kommentar); 
// Daten anzeigen
while( list ( $key$val ) = each $fulltext_new ) )
{
echo 
$val '<br>';
}
?>

Geändert von PEcman (07.07.2008 um 10:38 Uhr).
PEcman ist offline  
Alt 07.07.2008, 10:32  
Neuer Benutzer
 
Registriert seit: 04.07.2008
Beiträge: 4
PEcman befindet sich auf einem aufstrebenden Ast
Standard

An den vorschlag von Chris hab ich auch schon gedacht,
allerdings bin ich zu unerfahren um das hinzubekommen.

Mein Versuch:
PHP-Code:
<?php
$datei 
"datei.txt";
$kommentar file($datei);
$match "muster";
foreach (
$datei as $line) {
unset(
$line[$match]); 
}
$neu=implode("",$line); 
while( list ( 
$key$val ) = each $neu ) )
{
echo 
$val '<br>';
}
?>
Mit file_put_contents bekomm ich nur ne Fehlermeldung.

Script damit:
PHP-Code:
<?php
$datei 
"datei.txt";
$kommentar file($datei);
$match "muster";
foreach (
$kommentar as $line) {
unset(
$line[$match]); 
}
$neu=implode("",$line); 
file_put_contents($datei$neu);
?>

Geändert von PEcman (07.07.2008 um 10:38 Uhr).
PEcman ist offline  
Alt 07.07.2008, 10:47  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 992
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

Ist doch nicht weiter schwer oder?
PHP-Code:
<?php
$filename 
"test.txt";
$delete $_POST["delete"];
$file file($filename);
$file array_map("trim"$file);
unset(
$file[array_search(trim($delete), $file)]);
file_put_contents($filename$fileFILE_TEXT);
?>
Aufruf dann über ein Formular (mode: Post) mit dem textfeld name="delete"
__________________
Frank ist offline  
Alt 09.07.2008, 13:44  
Neuer Benutzer
 
Registriert seit: 04.07.2008
Beiträge: 4
PEcman befindet sich auf einem aufstrebenden Ast
Standard

Genau das ist, was ich gesucht habe.
Danke nochmal.
PEcman ist offline  
Alt 09.07.2008, 15:29  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Zitat von Frank Beitrag anzeigen
PHP-Code:
<?php
$file 
file($filename);
$file array_map("trim"$file);
unset(
$file[array_search(trim($delete), $file)]);
file_put_contents($filename$fileFILE_TEXT);
?>
Ähhäm, wird da nicht genau 'Array' in der Datei stehen? Kein implode?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 09.07.2008, 15:56  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

@nikosch: nö: file_put_contents
cycap ist offline  
Alt 09.07.2008, 17:32  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ah, ahaa.
Zitat:
You can also specify the data parameter as a single dimension array. This is equivalent to file_put_contents($filename, implode('', $array)).
Cool, das war mir neu...
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Text-Datei Zeile Löschen ! 7Style PHP Tipps 2008 6 30.06.2008 12:30
[Erledigt] 'upload-Datei' Zeile für Zeile auslesen Felix PHP Tipps 2008 18 29.06.2008 02:55
Tabelle mit while nach 4 spalten zur nächsten zeile Supeede PHP Tipps 2008 6 10.05.2008 09:46
__LINE__: Falsche Zeile Jacks Rache PHP Tipps 2006 5 10.06.2006 20:20
Zeile einfügen tennessee Server, Hosting und Workstations 5 02.06.2006 21:05
[Erledigt] *.bak Datei Zeile für Zeile auslesen PHP Tipps 2006 5 09.03.2006 14:25
Nächste Zeile in Datenbank finden, bei der online=1 ist. pino PHP Tipps 2007 2 18.12.2005 13:09
problem mit einlesen: von zeile zu zeile Tic Rederon PHP Tipps 2005-2 4 18.08.2005 17:10
[Erledigt] Einzelne Zeile löschen PHP Tipps 2005-2 3 18.08.2005 14:03
[Erledigt] nächste Zeile einer Db auslesen? PHP Tipps 2005-2 7 01.08.2005 00:11
[Erledigt] Jede 2. Zeile eine andere Farbe. Clan-Opa PHP Tipps 2004-2 1 26.11.2004 09:00
durchlauf,zeile für zeile + update Skazi Datenbanken 10 25.11.2004 13:59
[Erledigt] Problem mit einer Website PHP Tipps 2004 12 06.08.2004 10:34
[Erledigt] Funktion MAIL() funkt nicht PHP Tipps 2004 16 11.07.2004 17:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bestimmtes muster aus datei löschen php, php lösche zeile \\r\\n, php textdatei zeile mit trim löschen, mit php zeilenendzeichen \\n \\r\\n

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:54 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum