entweder: zeilenweise fgets() oder: zeichenweise fgetc()



Ähnliche Dokumente
Erstellen einer GoTalk-Auflage

Zugriff auf Daten der Wago über eine Webseite

10 Lesen und Schreiben von Dateien

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

STRATO Mail Einrichtung Mozilla Thunderbird

Klicken Sie auf Weiter und es erscheint folgender Dialog

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Anleitung über den Umgang mit Schildern

Internationales Altkatholisches Laienforum

Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

OSD-Branchenprogramm. OSD-Version Was ist neu? EDV-Power für Holzverarbeiter

Etikettendruck mit Works 7.0

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

OWA Benutzerhandbuch. Benutzerhandbuch Outlook Web App 2010

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Artikel Schnittstelle über CSV

ecaros2 - Accountmanager

2. Im Admin Bereich drücken Sie bitte auf den roten Button Webseite bearbeiten, sodass Sie in den Bearbeitungsbereich Ihrer Homepage gelangen.

CAQ Software für Ihr Qualitätsmanagement. Ablauf für die Erfassung der Fehler in der Fertigung

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Serienbrief mit Works 7.0

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Softwaretechnik Teil Webprogrammierung (HTML, PHP) SS2011

Anleitung zur Konfiguration eines NO-IP DynDNS-Accounts mit der TOOLBOXflex-3.2

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Partnerportal Installateure Registrierung

1 Vom Problem zum Programm

Professionelle Seminare im Bereich MS-Office

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Neue Schriftarten installieren

SAMMEL DEINE IDENTITÄTEN::: NINA FRANK :: :: WINTERSEMESTER 08 09

Anleitung für Kunden zum Umgang mit verschlüsselten s von der LASA Brandenburg GmbH

Diese Anleitung wurde erstellt von Niclas Lüchau und Daniel Scherer. Erste Anmeldung. Schritt 1: Anmeldung..2. Schritt 2: Passwort setzen 3

Was man mit dem Computer alles machen kann

Professionelle Seminare im Bereich MS-Office. Serienbrief aus Outlook heraus

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Quick-Guide Web Shop. Kurzanleitung für die Benutzer des Bernd Kraft Webshops

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

E Mail Versand mit der Schild NRW Formularverwaltung

Eine Einführung in die Installation und Nutzung von cygwin

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Handbuch für Easy Mail in Leicht Lesen

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

ICS-Addin. Benutzerhandbuch. Version: 1.0

Tevalo Handbuch v 1.1 vom

Festplatte defragmentieren Internetspuren und temporäre Dateien löschen

Microsoft PowerPoint 2013 Folien gemeinsam nutzen

Lehrer: Einschreibemethoden

Funktionen in PHP 1/7

Zertifikat in dakota einlesen Wie lese ich mein Zertifikat in dakota.le ein?

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Folgeanleitung für Fachlehrer

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Anwendungsbeispiele Buchhaltung

Kurzanleitung MAN E-Learning (WBT)

Projekt Online-Shop:

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Berechnungen in Access Teil I

Gimp Kurzanleitung. Offizielle Gimp Seite:

Handbuch. Adressen und Adressenpflege

AUF LETZTER SEITE DIESER ANLEITUNG!!!

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Einführung Internet Adresse Passwort Klick auf Ansicht der Mailbox nach dem Einloggen

icloud nicht neu, aber doch irgendwie anders

4. BEZIEHUNGEN ZWISCHEN TABELLEN

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

ANWENDUNGSHINWEISE ZU SYMBOLSTIX

I Serverkalender in Thunderbird einrichten

6.3 Serienbriefe über Microsoft Excel und Word

Viele Bilder auf der FA-Homepage

Windows 10. Vortrag am Fleckenherbst Bürgertreff Neuhausen.

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Kommunikations-Management

teischl.com Software Design & Services e.u. office@teischl.com

ZPlan.mobile. professionell planen. für iphone, ipad, Android Smartphone und -Tablets. Markt Management 2011 (Michael Berg und Patrick Jentes)

Wollen Sie einen mühelosen Direkteinstieg zum Online Shop der ÖAG? Sie sind nur einen Klick davon entfernt!

Erstellen einer digitalen Signatur für Adobe-Formulare

Serienbrief erstellen

Individuelle Formulare

Agentur für Werbung & Internet. Schritt für Schritt: Newsletter mit WebEdition versenden

Anlegen eines DLRG Accounts

Programmierkurs Java

Fax einrichten auf Windows XP-PC

Folgeanleitung für Klassenlehrer

Anleitungen zum Publizieren Ihrer Homepage

Migration NVC 5.x auf NEM/NPro (Migration eines bestehenden, produktiven NVC Verteilservers auf NEM/NPro)

Anhang zum Handbuch. Netzwerk

GeoPilot (Android) die App

Transkript:

PHP stellt viele Funktionen zur Verfügung, um mit Dateien effektiv zu arbeiten. Die grundsätzliche Vorgehensweise beim Auslesen einer Datei sieht wie folgt aus: 1. Öffnen der Datei fopen() 2. schrittweises Auslesen der Datei mit einer Schleife, gesteuert durch feof() entweder: zeilenweise fgets() oder: zeichenweise fgetc() 3. Schließen der Datei fclose() Die Funktionsweise einiger wichtiger Funktionen: fopen(): öffnet eine Datei 1. die zu öffnende Datei 2. der Modus: r = Nur-Lese; r+ = Lese- und Schreib; w = Nur-Schreib; a = anhängend Position des Datenzeigers in der Datei. Er befindet sich links vom ersten Zeichen. Außer beim Modus a hinter dem letzten Zeichen. feof(): file end of file ist das Dateiende erreicht? 1.die aktuelle Position des Datenzeigers Ist das Ende der Datei erreicht, wird true zurück gegeben die Schleife, mit der die Daten ausgelesen werden, wird abgebrochen. fgets(): zeilenweise Auslesen danach Datenzeiger eine Zeile nach unten 1.die aktuelle Position des Datenzeigers die aktuell ausgelesene Zeile fgetc(): zeichenweise Auslesen danach Datenzeiger ein Zeichen nach rechts 1.die aktuelle Position des Datenzeigers das aktuell ausgelesene Zeichen fwrite(): schreiben in eine zuvor geöffnete Datei 1. die aktuelle Position des Datenzeigers (ab da wird geschrieben) 2. was in die Datei geschrieben werden soll - Roscher W.-v.-Siemens-Schule Mannheim Seite 1 von 6

1. Beispiel: Die Startseite einer Webseite wird zeilenweise ausgelesen. Ob das Ende der Datei erreicht wird, erkennt die Funktion feof(), die den Wert true am Ende der Datei zurück gibt, und die Schleife, in der die Daten ausgelesen werden, abbricht. Quellcode: <?php $datei = fopen('http://www.roschee.de/','r'); $quellcode=' '; while(!feof($datei)) { $quellcode.=fgets($datei); } fclose($datei); Struktogramm: $fp=fopen('seite.txt','w'); fwrite($fp,$quellcode);?> Die Datei 'seite.txt' wird beim Öffnen durch die Funktion fopen() schreibend angelegt. Dies geht nur im 'write-modus', nicht im 'read/write-modus. 2. Beispiel: Ein sehr einfacher Besucherzähler besteht aus einer Textdatei und dieser PHP-Datei: Datenzeiger Quellcode Struktogramm count.txt: 23 <html><body> <h2>ein Textcounter</h2> <p>die Seite wurde <b><?php 23 23 24 $fp = fopen("count.txt", "r+"); $counter = fgets($fp); echo $counter; $counter++; rewind($fp); fputs($fp, $counter); fclose($fp);?></b>-mal aufgerufen.</p> </body> </html> Die Funktion rewind() setzt den Datenzeiger an den Anfang der Datei. Die Funktion fputs() schreibt ab dem Datenzeiger zeilenweise Daten in eine Datei. Hier wird der neue Wert von $counter in die Datei geschrieben, der alte wird überschrieben, da sich der Datenzeiger wieder am Anfang der Datei befand. Roscher W.-v.-Siemens-Schule Mannheim Seite 2 von 6

Aufgabe 1: Erstellen Sie eine Textdateien mit den folgenden 3 Namen (untereinander): Jörg Möller, Fred Schröder, Beate Lindström Ersetzen Sie durch ein PHP-Skript die Buchstaben ö in dieser Textdatei durch ein o. Erstellen Sie ein Struktogramm Schreiben Sie den Quellcode Um den Datenzeiger zu manipulieren wird hier eine weitere Funktion benötigt: fseek($fp,-1,seek_cur) der Datenzeiger wird um eine Position nach vorne ab der aktuellen Position versetzt. Ersetzen Sie nun die Buchstaben ö in dieser Textdatei durch ein oe. 1. Möglichkeit (Umlaute umwandeln): Jedes Zeichen auslesen kein Umlaut das Zeichen in ein Array speichern textdatei php neues Array Sören {S}ören S S{ö}ren S o e bei Umlaut zwei Zeichen (z.b. oe) in das Array speichern am Schluss Array in die Textdatei speichern S o e r e n Soeren 2. Möglichkeit: Die 1. Möglichkeit ist etwas umständlich. Mit einer passenden Funktion lässt sich der Programmieraufwand reduzieren. Zeichen können mit der Funktion str_replace() ersetzt werden: Bsp: $str2=str_replace($search, $replace, $str); Der Funktion str_replace() sucht in dem String '$str' nach der Zeichenkette (Zeichen) aus '$search' und ersetzt sie durch das Zeichen / die Zeichenkette aus '$replace' und speichert den ganzen, neuen String in die Variable '$str2'. Aufgabe 2: Erstellen Sie den Quellcode zum neben stehenden Struktogramm. Roscher W.-v.-Siemens-Schule Mannheim Seite 3 von 6

3. Möglichkeit: mit der Funktion str_replace(), einem Array und einer foreach-schleife: Exkurs: Mit foreach wird jeder Wert des Arrays vorübergehend einer Variable zugeordnet und dann z. B. gelistet. Der Name der Variable wird durch den Befehl as angegeben, Bsp: $blumen = array("rose", "Tulpe", "Nelke"); foreach($blumen as $meine_blume) echo "$meine_blume,<br />"; Anlegen eines (indizierten) Arrays Die Ausgabe würde dann so aussehen: Rose Tulpe Nelke <?php $umlaute = array( Anlegen eines assoziativen Arrays 'ä' => 'ae', 'Ä' => 'Ae', 'ö' => 'oe', 'Ö' => 'Oe', 'ü' => 'ue',' Ü' => 'Ue', 'ß' => 'ss' ); Feldname ä Wert ae; Feldname Ä Wert in diesem Feld Ae usw. Array $umlaute: $content = file_get_contents("namen.txt"); foreach ($umlaute as $k => $v) { $content = str_replace($k, $v, $content); echo $k; //Anzeige Name des Arrayfeldes echo "<br>$v<br>"; //Anzeige Wert des Arrayfeldes } $f = fopen("namen.txt", "w"); fwrite($f, $content); fclose($f);?> die foreach-schleife arbeitet automatisch jedes Arrayfeld ab; str_replace() sucht im String $content nach den Arrayfeldnamen (ä) und ersetzt ihn durch das Arrayfeld (ae) Die Funktion file_get_contents() liest eine Datei in einen String Speichere vom Array $umlaute den ersten Feldnamen in $k und den Wert in $v 1. Schleifendurchlauf: $k = ä $v = ae Beispiel einer Log- Datei: Analysieren von Log Dateien Dec 12 13:29:04 vserver pop3d: LOGIN FAILED, user=root, ip=[::ffff:159.120.142.174] Dec 12 13:29:04 vserver pop3d: LOGIN FAILED, user=root, ip=[::ffff:87.139.68.91] Dec 12 13:29:04 vserver pop3d: LOGIN FAILED, user=root, ip=[::ffff:192.168.5.251]... Aufgabe 3: Es soll untersucht werden, wie oft versucht wurde, sich in einem bestimmten Monat auf dem Server einzuloggen die ersten 3 Zeichen jeder Zeile müssen separiert und abgefragt werden. Roscher W.-v.-Siemens-Schule Mannheim Seite 4 von 6

Hilfe: Auf einzelne Zeichen in einem String kann über einen Index in { } zugegriffen werden. Bsp.: $a='hallo'; erstes Zeichen: $b = $a{0}; letztes Zeichen: $b = $a{4}; Aufgabe 4: Lösen Sie Aufgabe 3 mit der Funktion substr() (s. unten). Einen Teilstring aus einem String zurückgeben lassen: $a = substr ( '1234567', 2 ) Es wird alles ab der 2. Position nach rechts bis zum Ende zurückgegeben $a: 34567. $a = substr ( '1234567', -2 ) Es wird alles vom "Ende-2" bis zum Ende des Strings zurückgegeben $a: 67. Es kann auch ein dritter Parameter angegeben werden, der die Länge des zurück gegebenen Strings angibt: $a = substr ( '1234567', 2, 3 ) $a: 345 Aufgabe 5: Es soll untersucht werden, wie oft sich eine bestimmte IP-Adresse auf den Server eingeloggt hat die IP-Adresse in jeder Zeile muss dazu separiert und dann abgefragt werden. Wenn man sich die Log-Datei genauer anschaut, erkennt man, dass direkt vor der IP-Adresse ein ':' und direkt dahinter ein ']' steht. Ersetzt man ']' durch ':' wird die IP von Doppelpunkten umgeben. Teilt man nun jede eingelesene Zeile in Teilstrings und nimmt den ':' als Teilungszeichen, ist die IP- Adresse isoliert. Dazu wird die Funktion explode() benötigt: explode() zerteilt einen String (2. Parameter) anhand eines Trennzeichens (1. Parameter). Der String wird dabei in ein Array umgewandelt und jedes Zeichen (oder Teilstring) in einem Feld gespeichert. str_replace( ) explode( ) Schreiben Sie den Quellcode zum Stuktrogramm Beispiel: $a = 'Dec 12 13:29:04 vserver pop3d: LOGIN'; $ip = explode(":", $a); das Array $ip sieht dann so aus: Dec 12 13 29 04 vserver pop3d LOGIN Index: 0 1 2 3 Roscher W.-v.-Siemens-Schule Mannheim Seite 5 von 6

Aufgabe 6: Lösen Sie Aufgabe 5 mit der Funktion strpos() (s. unten). Die Position eines Zeichens in einem String ermitteln: $anzahl=strpos($eingabe,"@") In der Variable $anzahl wird die Position von @ in dem String aus $eingabe gespeichert. Mit strrpos() kann man innerhalb einer Zeichenkette das letzte Vorkommen eines Zeichens finden. Als Rückgabewert erhält man einen numerischen Wert, der der Position des Suchtreffers entspricht, sonst wird false zurückgegeben: $ergebnis = strrpos($text,'@'); Weitere Möglichkeit mit regulären Ausdrücken: mit der Funktion preg_match_all(); es werden hier die Vorkommen eines Suchausdrucks in einem String gezählt. Als Rückgabewert erhält man die Anzahl der gefundenen Treffer (s. Kommentare im Skript). Aufgabe 7: Aus einer Datenbanktabelle soll eine Textdatei mit Nachnamen und Vornamen erstellt werden. Aus dieser Textdatei ('namen.txt'; Aufbau: Nachname, Vorname) sollen Benutzer-Accounts eingerichtet und in eine zweite Textdatei (login.txt) gespeichert werden. Vorgaben: Der Login-Name besteht immer aus acht Zeichen. Die ersten sechs Zeichen des Login-Namens sind identisch mit den ersten sechs Zeichen des Nachnamens in Großschreibung. Falls der Nachname kürzer als sechs Zeichen ist, werden die fehlenden Zeichen mit dem Zeichen 'x' aufgefüllt. Das 7. und 8. Zeichen des Login-Namens ist der 1. und 2. Buchstabe des Vornamens. Annahme: Vornamen haben immer mindestens drei Zeichen. Die Login-Namen werden nach der Erstellung in einer Datei login.txt abgespeichert. Die Länge eines Strings ermitteln: $anzahl=strlen($eingabe) In der Variable $anzahl wird die Anzahl der Zeichen aus $eingabe gespeichert. Roscher W.-v.-Siemens-Schule Mannheim Seite 6 von 6