3 Angebote ab € 7,71 €
- Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Dieses Buch ist eine umfassende Sammlung von typischen Aufgabenstellungen, Lösungen und praxisbezogenen Beispielen, die jedem PHP-Programmierer von Nutzen sein können. Im bewährten O'Reilly-Kochbuch-Format enthält es kurze, auf das Wesentliche konzentrierte Codebeispiele, die ein großes Themenspektrum abdecken und sich leicht in andere Programme integrieren lassen. Das PHP Kochbuch bietet aber mehr als nur Cut-and-Paste-Codestücke: Die "Rezepte" erläutern umfassend, wie der Code funktioniert und warum der vorgestelle Ansatz gewählt wurde, so dass Sie auch praktikable Lösungsstrategien…mehr
Dieses Buch ist eine umfassende Sammlung von typischen Aufgabenstellungen, Lösungen und praxisbezogenen Beispielen, die jedem PHP-Programmierer von Nutzen sein können. Im bewährten O'Reilly-Kochbuch-Format enthält es kurze, auf das Wesentliche konzentrierte Codebeispiele, die ein großes Themenspektrum abdecken und sich leicht in andere Programme integrieren lassen. Das PHP Kochbuch bietet aber mehr als nur Cut-and-Paste-Codestücke: Die "Rezepte" erläutern umfassend, wie der Code funktioniert und warum der vorgestelle Ansatz gewählt wurde, so dass Sie auch praktikable Lösungsstrategien kennenlernen, die Sie auf ähnliche Situationen übertragen können.
Anstatt in Mailing-Listen, Online-Dokumentationen oder anderen Quellen stöbern zu müssen, könnenSie sich auf das PHP Kochbuch verlassen, das Sie schnell mit Lösungen für verbreitete Probleme versorgt. Die Rezepte reichen von einfacheren Aufgaben - wie dem Absenden einer Datenbank-Abfrage und dem Auslesen von URLs - bis zu ganzen Progr
Code-Geschnetzteltes für den Programmieralltag
Einführungen und Handbücher bieten einen guten Einstieg in eine Programmiersprache wie PHP und einen guten Überblick über alles, was geht. Nur: Im Programmieralltag sind dann meist ausgerechnet die Funktionen gefragt, die hier nicht besprochen werden. Da liefert dann der Griff zur vollständigen Referenz zumindest den Ansatzpunkt für die Lösung. Die Ausführungen dort sind nur meist so knapp gehalten, dass noch eine Webrecherche oder mühsames Ausprobieren nötig sind, um schließlich das Gesuchte zu finden. O´Reillys Kochbücher bewegen sich genau in der goldenen Mitte, sind umfangreicher und praxisorientierter als Handbücher und dabei im Detail sehr viel ausführlicher als eine Referenz.
Lösungen, Diskussionen und weiterführende Informationen
In 21 Themenbereichen von Strings über Objektorientiertes, Web und Grafik bis hin zu clientseitigem PHP werden jeweils zwischen 8 und 26 typische Problemen mit Lösungen vorgestellt. Der Aufbau ist dabei immer derselbe: Auf eine kurze Schilderung des Problems folgt gleich die Lösung. Die anschließende Diskussion und Hinweise auf weitere Informationen im Internet, helfen, die empfohlene Vorgehensweise zu verstehen und eigenen Bedürfnisse anzupassen. Eine wertvolle Ergänzung für das PHP-Programmierer-Regal.
Anstatt in Mailing-Listen, Online-Dokumentationen oder anderen Quellen stöbern zu müssen, könnenSie sich auf das PHP Kochbuch verlassen, das Sie schnell mit Lösungen für verbreitete Probleme versorgt. Die Rezepte reichen von einfacheren Aufgaben - wie dem Absenden einer Datenbank-Abfrage und dem Auslesen von URLs - bis zu ganzen Progr
Code-Geschnetzteltes für den Programmieralltag
Einführungen und Handbücher bieten einen guten Einstieg in eine Programmiersprache wie PHP und einen guten Überblick über alles, was geht. Nur: Im Programmieralltag sind dann meist ausgerechnet die Funktionen gefragt, die hier nicht besprochen werden. Da liefert dann der Griff zur vollständigen Referenz zumindest den Ansatzpunkt für die Lösung. Die Ausführungen dort sind nur meist so knapp gehalten, dass noch eine Webrecherche oder mühsames Ausprobieren nötig sind, um schließlich das Gesuchte zu finden. O´Reillys Kochbücher bewegen sich genau in der goldenen Mitte, sind umfangreicher und praxisorientierter als Handbücher und dabei im Detail sehr viel ausführlicher als eine Referenz.
Lösungen, Diskussionen und weiterführende Informationen
In 21 Themenbereichen von Strings über Objektorientiertes, Web und Grafik bis hin zu clientseitigem PHP werden jeweils zwischen 8 und 26 typische Problemen mit Lösungen vorgestellt. Der Aufbau ist dabei immer derselbe: Auf eine kurze Schilderung des Problems folgt gleich die Lösung. Die anschließende Diskussion und Hinweise auf weitere Informationen im Internet, helfen, die empfohlene Vorgehensweise zu verstehen und eigenen Bedürfnisse anzupassen. Eine wertvolle Ergänzung für das PHP-Programmierer-Regal.
Produktdetails
- Produktdetails
- Verlag: O´REILLY
- 2. Auflage
- Deutsch
- ISBN-13: 9783897214095
- ISBN-10: 3897214091
- Artikelnr.: 13682343
- Verlag: O´REILLY
- 2. Auflage
- Deutsch
- ISBN-13: 9783897214095
- ISBN-10: 3897214091
- Artikelnr.: 13682343
David Sklar ist als unabhängiger Consultant spezialisiert auf Software-Entwicklung, Strategie-Planung und technische Schulungen. Er war Mitbegründer und Chief Technology Officer von Student.Com und TVGrid.Com. Bei beiden Firmen war er für die Architektur und die Entwicklung verschiedener Systeme verantwortlich, die personalisierte dynamische Inhalte für Benutzer auf der ganzen Welt liefern. Nachdem er PHP im Jahr 1996 als Lösung für seine Bedürfnisse bei der Web-Programmierung entdeckt hatte, hat er PX (http://px.sklar.com) eingerichtet und ermöglichte damit PHP-Benutzern den Austausch von Programmen. Seitdem verlässt er sich bei privaten und beruflichen Projekten ganz auf PHP. Er ist Autor des Buchs Essential PHP Tools (Apress) und des O''Reilly-Titels Einführung in PHP 5. -- Wenn er nicht am Computer sitzt, isst David Mini-Donuts, hört Musik und kocht gerne. Er lebt in New York City und hat einen Abschluss in Computer Science von der Yale-Universität. Adam Trachtenberg ist Manager of Technical Evangelism bei eBay und predigt Entwicklern und Geschäftsleuten das Evangelium der eBay-Plattform rund um den Globus. Bevor er zu eBay ging, war er Mitbegründer und Vice President for Development der beiden Firmen Student.Com und TVGrid.Com. In beiden Unternehmen leitete er den Bereich Website-Design und -Entwicklung für Frontend und mittlerer Ebene und arbeitete mit an der Firmenplanung und -strategie. Adam fing 1997 an, PHP zu verwenden. Er ist Autor des O''Reilly-Titels Umsteigen auf PHP 5. Er spricht häufig auf Konferenzen über PHP, XML und Webservices und hat Artikel zu PHP für CNET, PHP Magazine und das O''Reilly Network geschrieben. -- Adam ist erst kürzlich von New York City nach Kalifornien umgezogen und lebt jetzt mit seiner Freundin in San Francisco. Er hat einen B.A. und einen M.B.A. der Columbia-Universität. Ulrich Speidel lebt in Auckland, Neuseeland, wo er an der University of Auckland in den Bereichen Datenkommunikation, Anwendungs- und Internetprogrammierung lehrt und auf dem Gebiet der Informationstheorie forscht. In Neuseeland erhielt er nach einem Studium in Erlangen und Auckland auch seinen MSc in Physik und einen PhD in Informatik. Zusammen mit seiner Frau betreibt er auch eine kleine Firma, Technology Transfer Consulting Ltd., die technische Übersetzungen und Webprogrammierung anbietet. O''Reilly-Lesern ist Ulrich Speidel unter seinem vorehelichen Namen (Ulrich Günther) bereits als Autor von PHP 5 - Ein praktischer Einstieg bekannt sowie als Übersetzer des JavaScript-Kochbuch für Web-Anwendungen und mehrerer Kapitel aus Perl in a Nutshell. Seine Freizeit verbringt er gerne mit seiner Frau in der neuseeländischen Natur. Stephan Schmidt lebt in Karlsruhe, der zweitwärmsten Stadt Deutschlands, und arbeitet dort als Technical Evangelist und Web Developer für die 1&1 Internet AG. Zuvor war er als Leiter der Software-Entwicklung bei der Metrix Internet Design GmbH tätig. Zu seinen Fachgebieten zählen neben PHP vor allem auch XML und Webservices, denen er sich verstärkt im Open Source-Bereich widmet und über die er gerne auf Konferenzen rund um den Globus referiert. Neben einer sehr aktiven Mitarbeit am PEAR-Projekt hat er bereits 2001 das Projekt PHP Application Tools (PAT) gegründet, mit dem er verschiedene Module und Applikationen veröffentlicht. Sein Dank gilt seiner Freundin, die ihn während dieser ganzen außerberuflichen Aktivitäten immer mit viel Liebe und zwei warmen Mahlzeiten pro Tag unterstützt und die er Ende 2005 in Las Vegas heiraten wird. Kann er sich doch mal von PHP losreißen, beschäftigt er sich mit dem King, Elvis, und amerikanischen Superhelden.
Inhaltsverzeichnis
Einleitung XV
1
Strings 1
1.1 Auf Teil-Strings zugreifen 4
1.2 Teile von Strings ersetzen 5
1.3 Einen String zeichenweise verarbeiten 6
1.4 Einen String wort- oder zeichenweise umkehren 8
1.5 Tabulatoren expandieren und komprimieren 8
1.6 Die Groß- und Kleinschreibung in Texten ändern 10
1.7 Funktionen und Ausdrücke in Strings interpolieren 12
1.8 Leerzeichen aus einem String entfernen 13
1.9 Kommaseparierte Daten zerlegen 14
1.10 Begrenzte Daten mit fester Länge zerlegen 15
1.11 Strings aufteilen 18
1.12 Text an bestimmten Zeilenlängen umbrechen 20
1.13 Binärdaten in einem String speichern 22
2
Zahlen 25
2.1 Prüfen, ob ein String eine gültige Zahl enthält 26
2.2 Fließkommazahlen vergleichen 27
2.3 Fließkommazahlen runden 28
2.4 Mit Bereichen von Integer-Zahlen arbeiten 29
2.5 Zufallszahlen innerhalb eines Bereichs generieren 30
2.6 Verzerrte Zufallszahlen generieren 32
2.7 Logarithmen berechnen 33
2.8 Potenzen berechnen 34
2.9 Zahlen formatieren 35
2.10 Den Plural korrekt ausgeben 36
2.11 Trigonometrische Funktionen berechnen 37
2.12 Trigonometrische Funktionen mit Graden anstelle von Bogenmaßen berechnen 38
2.13 Mit sehr großen oder kleinen Zahlen arbeiten 39
2.14 Zwischen Zahlensystemen konvertieren 40
2.15 Mit anderen Zahlen als Dezimalzahlen rechnen 41
3
Datum und Zeit 43
3.1 Das aktuelle Datum und die aktuelle Zeit feststellen 45
3.2 Datums- und Zeitbestandteile in einen Epochen-Zeitstempel konvertieren 47
3.3 Einen Epochen-Zeitstempel in Zeit- und Datumsbestandteile konvertieren 49
3.4 Datum oder Zeit in einem bestimmten Format ausgeben 50
3.5 Die Differenz zwischen zwei Datumswerten berechnen 54
3.6 Den Abstand zwischen zwei Datumswerten über Julianische Tage ermitteln 56
3.7 Den Tag der Woche, des Monats, des Jahres oder die Kalenderwoche des Jahres ermitteln 57
3.8 Ein Datum validieren 59
3.9 Datums- und Zeitwerte aus Strings lesen 61
3.10 Addition und Subtraktion mit einem Datum 63
3.11 Die Zeit mit Zeitzonen berechnen 64
3.12 Die Sommerzeit berücksichtigen 69
3.13 Zeitangaben mit hoher Genauigkeit generieren 70
3.14 Zeiträume generieren 71
3.15 Andere Kalender als den Gregorianischen verwenden 73
3.16 Programm: Kalender 74
4
Arrays 77
4.1 Ein Array anlegen, das nicht mit dem Element 0 beginnt 80
4.2 Mehrere Array-Elemente unter einem Schlüssel speichern 81
4.3 Ein Array mit einer Folge von Integer-Werten initialisieren 83
4.4 Ein Array durchlaufen 83
4.5 Elemente aus einem Array löschen 86
4.6 Die Größe eines Arrays ändern 88
4.7 Ein Array an ein anderes anfügen 90
4.8 Ein Array in einen String verwandeln 92
4.9 Ein Array mit Kommata ausgeben 94
4.10 Prüfen, ob sich ein Schlüssel in einem Array befindet 95
4.11 Prüfen, ob sich ein Element in einem Array befindet 96
4.12 Die Position eines Elements in einem Array feststellen 97
4.13 Elemente finden, die einer bestimmten Prüfung standhalten 98
4.14 Das Array-Element mit dem größten oder kleinsten Wert finden 100
4.15 Ein Array umkehren 101
4.16 Ein Array sortieren 101
4.17 Ein Array über ein berechnetes Feld sortieren 103
4.18 Mehrere Arrays sortieren 105
4.19 Ein Array mit Hilfe einer Methode statt einer Funktion sortieren 107
4.20 Ein Array in eine zufällige Reihenfolge bringen 108
4.21 Einen Kartenstapel mischen 109
4.22 Doppelte Elemente aus einem Array entfernen 110
4.23 Die Vereinigungs-, Schnitt- oder Differenzmenge zweier Arrays ermitteln 111
4.24 Alle Elementkombinationen eines Arrays finden 113
4.25 Alle Permutationen eines Arrays finden 115
4.26 Programm: Ein Array horizontal angeordnet in einer HTML-Tabelle ausgeben 118
5
Variablen 121
5.1 Die Verwechslung von == und = vermeiden 122
5.2 Einen Vorgabewert festlegen 123
5.3 Werte ohne Hilfe von temporären Variablen austauschen 124
5.4 Einen dynamischen Variablennamen erzeugen 125
5.5 Statische Variablen verwenden 126
5.6 Variablen in mehreren Prozessen gemeinsam verwenden 128
5.7 Komplexe Daten als String kapseln 130
5.8 Variableninhalte als Strings ausgeben 131
6
Funktionen 135
6.1 Auf Funktionsparameter zugreifen 136
6.2 Vorgabewerte für Funktionsparameter festlegen 137
6.3 Werte als Referenzen übergeben 139
6.4 Benannte Parameter verwenden 140
6.5 Funktionen mit einer variablen Anzahl von Argumenten verwenden 142
6.6 Werte per Referenz zurückgeben 144
6.7 Mehr als einen Wert zurückgeben 145
6.8 Bestimmte Rückgabewerte überspringen 147
6.9 Fehlermeldungen zurückgeben 148
6.10 Variable Funktionen aufrufen 150
6.11 Innerhalb einer Funktion auf eine globale Variable zugreifen 151
6.12 Dynamische Funktionen erzeugen 153
6.13 Objekt-Datentypen für Funktionsparameter vorschreiben 153
7
Klassen und Objekte 155
7.1 Objekte instanziieren 161
7.2 Objekte kopieren (klonen) 162
7.3 Ein Objekt durch eine Unterklasse erweitern 164
7.4 Auf eine überschriebene Methode zugreifen 166
7.5 Eigenschaften und Methoden verstecken 168
7.6 Objekt-Konstruktoren definieren 170
7.7 Ein Objekt zerstören 172
7.8 Eigenschaften mit _ _set() und _ _get() überladen 173
7.9 Schreib- oder lesegeschützte Eigenschaften implementieren 176
7.10 Methoden mit _ _call() überladen 178
7.11 Methoden und Eigenschaften einer Klasse ermitteln 180
7.12 Ein Objekt wie ein Array verwenden 182
7.13 Polymorphe Methoden verwenden 184
7.14 Objekt-Schnittstellen durch Interfaces standardisieren 186
7.15 Einem Basisobjekt zusätzliche Eigenschaften hinzufügen 189
7.16 Eine Klasse dynamisch erzeugen 190
7.17 Ein Objekt dynamisch instanziieren 191
8
Effizienter Umgang mit Daten 193
8.1 Über die Eigenschaften eines Objekt iterieren 195
8.2 Einfache Objekt-Iteration mit IteratorAggregate und ArrayObject 196
8.3 Einen eigenen Iterator implementieren 198
8.4 Einen eigenen Wrapper für Streams schreiben 202
8.5 Einen Stream filtern 206
8.6 Eigene Filter schreiben 207
9
Fehlerbehandlung mit Exceptions 210
9.1 PHP-Fehler- und Warnmeldungen in Ausnahmen umwandeln 212
9.2 Ausnahmen abfangen 213
9.3 Eigene Ausnahmen werfen 214
9.4 Klassenabhängiges Exception-Handling 216
10
Web-Grundlagen 218
10.1 Cookies setzen 219
10.2 Cookie-Werte lesen 221
10.3 Cookies löschen 222
10.4 Zu einer anderen Adresse umleiten 223
10.5 Sitzungen verfolgen 224
10.6 Sessions in einer Datenbank speichern 225
10.7 Verschiedene Browser erkennen 229
10.8 Einen GET-Query-String bilden 231
10.9 HTTP-Basic-Authentifizierung einsetzen #
10.10 Cookie-Authentifizierung verwenden 235
10.11 Ausgaben vorzeitig an den Browser senden 238
10.12 Ausgaben an den Browser zwischenspeichern 239
10.13 Web-Ausgaben mit gzip komprimieren 240
10.14 Fehlermeldungen vor Anwendern verbergen 241
10.15 Einstellungen zur Fehlerbehandlung vornehmen 242
10.16 Eine benutzerdefinierte Funktion zur Fehlerbehandlung verwenden 244
10.17 Fehler protokollieren 246
10.18 Den Fehler "headers already sent" vermeiden 247
10.19 Debug-Informationen protokollieren 248
10.20 Umgebungsvariablen lesen 251
10.21 Umgebungsvariablen setzen 252
10.22 Konfigurationsvariablen lesen 253
10.23 Konfigurationsvariablen setzen 254
10.24 Innerhalb von Apache kommunizieren 255
10.25 Code-Profile generieren 257
10.26 Geänderte Dateien herunterladen und unveränderte vom Browser cachen lassen 260
10.27 Programm: (De-)Aktivator für Website-Konten 263
10.28 Programm: Störungsprüfer 265
11
Formulare 272
11.1 Formulareingaben verarbeiten 274
11.2 Formulareingaben prüfen 276
11.3 Mit mehrseitigen Formularen arbeiten 278
11.4 Formulare mit erhaltenen Informationen und Fehlermeldungen erneut anzeigen 281
11.5 Mehrfaches Absenden desselben Formulars verhindern 284
11.6 Hochgeladene Dateien verarbeiten 286
11.7 Die Formularverarbeitung durch PHP absichern 288
11.8 Steuerzeichen in Benutzerdaten durch Escape-Sequenzen ersetzen 290
11.9 Mit Formularvariablen arbeiten, deren Name einen Punkt enthält 291
11.10 Formularelemente mit Mehrfachoptionen verwenden 292
11.11 Drop-down-Menüs auf Basis des aktuellen Datums erzeugen 294
12
Zugriff auf Datenbanken 296
12.1 Textdateien als Datenbanken verwenden 303
12.2 DBM-Datenbanken verwenden 304
12.3 Eine SQLite-Datenbank einrichten 308
12.4 Die Verbindung mit einer SQL-Datenbank herstellen 310
12.5 Eine SQL-Datenbank abfragen 312
12.6 Zeilen ohne Schleifen einlesen 314
12.7 Daten in einer SQL-Datenbank verändern 316
12.8 Abfragen effizient wiederholen 317
12.9 Feststellen, wie viele Zeilen eine Abfrage zurückgegeben hat 319
12.10 Behandlung von Anführungszeichen 320
12.11 Debug-Informationen und Fehler protokollieren 322
12.12 Eindeutige Kennzeichen automatisch zuweisen 325
12.13 Abfragen programmgesteuert erstellen 326
12.14 Paginierte Links für eine Reihe von Datensätzen generieren 331
12.15 Abfragen und Ergebnisse zwischenspeichern 335
12.16 Eine SSL-Verbindung zu einer MySQLi-Datenbank herstellen 337
12.17 Programm: Ein Diskussionsforum speichern 339
13
Web-Automatisierung 347
13.1 Eine URL mit der GET-Methode abrufen 349
13.2 Eine URL mit der POST-Methode abrufen 351
13.3 Eine URL mit Cookies abrufen 352
13.4 Eine URL mit Headern abrufen 354
13.5 Eine HTTPS-URL abrufen 356
13.6 Den Datenaustauch auf HTTP-Ebene debuggen 356
13.7 Eine Webseite mit Markup versehen 359
13.8 Links aus einer HTML-Datei extrahieren 361
13.9 ASCII in HTML konvertieren 362
13.10 HTML in ASCII konvertieren 363
13.11 HTML- und PHP-Tags entfernen 364
13.12 Smarty-Templates einsetzen 365
13.13 Die Protokolldatei eines Webservers analysieren 367
13.14 Programm: Veraltete Links finden 369
13.15 Programm: Aktualisierte Links herausfinden 372
14
XML 375
14.1 XML manuell generieren 377
14.2 XML mit DOM generieren 380
14.3 XML-Dokumente mit xmlWriter generieren 383
14.4 XML-Daten mit DOM parsen 386
14.5 XML mit SAX parsen 389
14.6 XML mit SimpleXML parsen 394
14.7 Daten zwischen DOM und SimpleXML austauschen 398
14.8 XML mit xmlReader parsen 401
14.9 XML mit XSLT transformieren 407
14.10 PHP-Funktionen in XSL-Stylesheets verwenden 409
14.11 Informationen aus einem XML-Dokument selektieren 413
14.12 XML-Dokumente für Menschen lesbar machen 418
14.13 XML-Dokumente aus PHP-Datenstrukturen erzeugen 422
14.14 XML-Dokumente in PHP-Arrays oder Objekte einlesen 425
15
Webservices 431
15.1 XML-RPC-Anfragen senden 432
15.2 XML-RPC-Anfragen empfangen 435
15.3 XML-RPC-Anfragen mit der XMLRPCi-Erweiterung senden 438
15.4 SOAP-Anfragen mit einem WSDL-Dokument senden 440
15.5 SOAP-Anfragen ohne ein WSDL-Dokument senden 444
15.6 SOAP-Anfragen empfangen 448
15.7 Anfragen an den Amazon-Webservice senden 452
15.8 Anfragen an den eBay-Webservice senden 457
15.9 RSS-Feeds lesen 461
15.10 REST-Anfragen senden 464
15.11 Daten mit WDDX austauschen 469
16
Reguläre Ausdrücke 472
16.1 Von ereg zu preg wechseln 475
16.2 Wörter suchen 477
16.3 Den n-ten Match finden 478
16.4 Zwischen gierigem und nicht-gierigem Matching wählen 479
16.5 E-Mail-Adressen validieren 481
16.6 Alle zu einem Muster passenden Zeilen in einer Datei finden 485
16.7 Text innerhalb von HTML-Tags finden 485
16.8 In regulären Ausdrücken Sonderzeichen verwenden 487
16.9 Datensätze lesen, bei denen ein Muster als Separator dient 489
17
Verschlüsselung und Sicherheit 491
17.1 Passwörter aus den Dateien Ihrer Site heraushalten 493
17.2 Daten durch Kodierung verschleiern 494
17.3 Daten durch Prüfsummen verifizieren 495
17.4 Passwörter speichern 496
17.5 Überprüfung der Passwortsicherheit 498
17.6 Was tun bei verlorenen Passwörtern? 500
17.7 Daten ver- und entschlüsseln 502
17.8 Verschlüsselte Daten in einer Datei oder Datenbank speichern 506
17.9 Verschlüsselte Daten gemeinsam mit einer anderen Website nutzen 509
17.10 SSL ermitteln 511
17.11 E-Mail mit GPG verschlüsseln 512
18
Grafik 515
18.1 Linien, Rechtecke und Vielecke zeichnen 519
18.2 Bogen, Ellipsen und Kreise zeichnen 520
18.3 Unterbrochene Linien zeichnen 522
18.4 Text zeichnen 524
18.5 Zentrierten Text zeichnen 526
18.6 Dynamische Bilder zusammensetzen 531
18.7 Eine transparente Farbe ermitteln und einstellen 534
18.8 Programm: Heraufgeladene Digitalfotos auf Webformat verkleinern 535
18.9 Grafiken geschützt ausgeben 538
18.10 Programm: Aus Umfrageergebnissen Balkendiagramme erstellen 540
19
Internationalisierung und Lokalisierung 544
19.1 Vorhandene Locales auflisten 546
19.2 Ein bestimmtes Locale verwenden 546
19.3 Das Default-Locale setzen 548
19.4 Textmeldungen lokalisieren 548
19.5 Datum und Uhrzeiten lokalisieren 552
19.6 Lokalisierung von Währungen 553
19.7 Bilder lokalisieren 555
19.8 Eingebundene Dateien lokalisieren 557
19.9 Lokalisierungsressourcen verwalten 558
19.10 gettext verwenden 560
19.11 Unicode-Zeichen lesen und ausgeben 561
20
Internetdienste 564
20.1 E-Mails senden 565
20.2 MIME-Mail senden 568
20.3 E-Mail mit IMAP oder POP3 lesen 571
20.4 Nachrichten an Usenet-Newsgruppen senden 574
20.5 Usenet-Nachrichten lesen 576
20.6 Dateien mit FTP herauf- und herunterladen 581
20.7 Adressen über LDAP abfragen 584
20.8 LDAP zur Benutzer-Authentifizierung verwenden 586
20.9 DNS-Lookups ausführen 588
20.10 Überprüfen, ob ein Host erreichbar ist 590
20.11 Informationen über einen Domainnamen herausfinden 592
21
Dateien 594
21.1 Eine lokale Datei erstellen oder öffnen 598
21.2 Eine temporäre Datei erstellen 599
21.3 Eine Datei auf einem entfernten Server öffnen 600
21.4 Eine Datei in einen String einlesen 602
21.5 Einen String in eine Datei schreiben 603
21.6 Die Zeilen, Absätze oder Datensätze in einer Datei zählen 604
21.7 Jedes Wort einer Datei verarbeiten 606
21.8 Eine bestimmte Zeile einer Datei einlesen 608
21.9 Eine Datei zeilen- oder absatzweise in rückwärtiger Reihenfolge bearbeiten 609
21.10 Eine Zeile per Zufall aus einer Datei auswählen 609
21.11 Alle Zeilen einer Datei in eine Zufallsreihenfolge bringen 610
21.12 Textfelder variabler Länge verarbeiten 611
21.13 Konfigurationsdateien einlesen 612
21.14 Von einer bestimmten Stelle einer Datei lesen oder an eine bestimmte Stelle einer Datei schreiben 615
21.15 Die letzte Zeile einer Datei entfernen 616
21.16 Eine Datei an ihrem Platz ohne eine temporäre Datei ändern 618
21.17 Gepufferte Ausgabedaten in eine Datei schreiben 620
21.18 An viele Datei-Handles gleichzeitig schreiben 621
21.19 Metazeichen der Shell mit Escape-Zeichen versehen 622
21.20 Einem Programm Eingabedaten durchgeben 624
21.21 Die Standardausgabe eines Programms lesen 624
21.22 Den Standardfehlerkanal eines Programms einlesen 626
21.23 Eine Datei sperren 627
21.24 Komprimierte Dateien lesen und schreiben 630
21.25 Programm: Unzip 632
22
Verzeichnisse 634
22.1 Zeitstempel auslesen und setzen 637
22.2 Auf Dateiinformationen zugreifen 638
22.3 Dateiberechtigungen oder Dateieigentümerschaft ändern 640
22.4 Einen Dateinamen in seine Bestandteile zerlegen 641
22.5 Eine Datei löschen 642
22.6 Eine Datei kopieren oder verschieben bzw. umbenennen 643
22.7 Alle Dateien in einem Verzeichnis bearbeiten 643
22.8 Eine Liste von Dateinamen finden, die einem bestimmten Muster entspricht 645
22.9 Dateien eines Verzeichnisses filtern 646
22.10 Neue Verzeichnisse erstellen 647
22.11 Ein Verzeichnis und seinen Inhalt löschen 649
22.12 Programm: Eine Auflistung des Webserver-Verzeichnisses erstellen 649
22.13 Programm: Site-Suche 654
23
PHP auf der Kommandozeile 659
23.1 Programmparameter parsen 661
23.2 Programmparameter mit Console_Getopt oder Console_Getargs parsen 662
23.3 Von der Tastatur lesen 669
23.4 Passwörter einlesen 670
23.5 Die Ausgabe eines Kommandozeilen-Befehls weiterverarbeiten 673
23.6 Dateien zeilenweise verarbeiten 675
23.7 Prozesse forken 678
23.8 Einen Server programmieren 681
24
PEAR 685
24.1 PEAR installieren 686
24.2 Den PEAR Package Manager verwenden 690
24.3 PEAR-Pakete installieren und deinstallieren 692
24.4 PEAR-Pakete upgraden 694
24.5 PECL-Pakete installieren 696
24.6 Pakete aus anderen Channels installieren 698
24.7 PEAR in Shared-Hosting-Umgebungen installieren 703
24.8 Eigene PEAR-Pakete erstellen 708
24.9 Eigene Pakete über einen Channel-Server vertreiben 714
Index 725
Einleitung XV
1
Strings 1
1.1 Auf Teil-Strings zugreifen 4
1.2 Teile von Strings ersetzen 5
1.3 Einen String zeichenweise verarbeiten 6
1.4 Einen String wort- oder zeichenweise umkehren 8
1.5 Tabulatoren expandieren und komprimieren 8
1.6 Die Groß- und Kleinschreibung in Texten ändern 10
1.7 Funktionen und Ausdrücke in Strings interpolieren 12
1.8 Leerzeichen aus einem String entfernen 13
1.9 Kommaseparierte Daten zerlegen 14
1.10 Begrenzte Daten mit fester Länge zerlegen 15
1.11 Strings aufteilen 18
1.12 Text an bestimmten Zeilenlängen umbrechen 20
1.13 Binärdaten in einem String speichern 22
2
Zahlen 25
2.1 Prüfen, ob ein String eine gültige Zahl enthält 26
2.2 Fließkommazahlen vergleichen 27
2.3 Fließkommazahlen runden 28
2.4 Mit Bereichen von Integer-Zahlen arbeiten 29
2.5 Zufallszahlen innerhalb eines Bereichs generieren 30
2.6 Verzerrte Zufallszahlen generieren 32
2.7 Logarithmen berechnen 33
2.8 Potenzen berechnen 34
2.9 Zahlen formatieren 35
2.10 Den Plural korrekt ausgeben 36
2.11 Trigonometrische Funktionen berechnen 37
2.12 Trigonometrische Funktionen mit Graden anstelle von Bogenmaßen berechnen 38
2.13 Mit sehr großen oder kleinen Zahlen arbeiten 39
2.14 Zwischen Zahlensystemen konvertieren 40
2.15 Mit anderen Zahlen als Dezimalzahlen rechnen 41
3
Datum und Zeit 43
3.1 Das aktuelle Datum und die aktuelle Zeit feststellen 45
3.2 Datums- und Zeitbestandteile in einen Epochen-Zeitstempel konvertieren 47
3.3 Einen Epochen-Zeitstempel in Zeit- und Datumsbestandteile konvertieren 49
3.4 Datum oder Zeit in einem bestimmten Format ausgeben 50
3.5 Die Differenz zwischen zwei Datumswerten berechnen 54
3.6 Den Abstand zwischen zwei Datumswerten über Julianische Tage ermitteln 56
3.7 Den Tag der Woche, des Monats, des Jahres oder die Kalenderwoche des Jahres ermitteln 57
3.8 Ein Datum validieren 59
3.9 Datums- und Zeitwerte aus Strings lesen 61
3.10 Addition und Subtraktion mit einem Datum 63
3.11 Die Zeit mit Zeitzonen berechnen 64
3.12 Die Sommerzeit berücksichtigen 69
3.13 Zeitangaben mit hoher Genauigkeit generieren 70
3.14 Zeiträume generieren 71
3.15 Andere Kalender als den Gregorianischen verwenden 73
3.16 Programm: Kalender 74
4
Arrays 77
4.1 Ein Array anlegen, das nicht mit dem Element 0 beginnt 80
4.2 Mehrere Array-Elemente unter einem Schlüssel speichern 81
4.3 Ein Array mit einer Folge von Integer-Werten initialisieren 83
4.4 Ein Array durchlaufen 83
4.5 Elemente aus einem Array löschen 86
4.6 Die Größe eines Arrays ändern 88
4.7 Ein Array an ein anderes anfügen 90
4.8 Ein Array in einen String verwandeln 92
4.9 Ein Array mit Kommata ausgeben 94
4.10 Prüfen, ob sich ein Schlüssel in einem Array befindet 95
4.11 Prüfen, ob sich ein Element in einem Array befindet 96
4.12 Die Position eines Elements in einem Array feststellen 97
4.13 Elemente finden, die einer bestimmten Prüfung standhalten 98
4.14 Das Array-Element mit dem größten oder kleinsten Wert finden 100
4.15 Ein Array umkehren 101
4.16 Ein Array sortieren 101
4.17 Ein Array über ein berechnetes Feld sortieren 103
4.18 Mehrere Arrays sortieren 105
4.19 Ein Array mit Hilfe einer Methode statt einer Funktion sortieren 107
4.20 Ein Array in eine zufällige Reihenfolge bringen 108
4.21 Einen Kartenstapel mischen 109
4.22 Doppelte Elemente aus einem Array entfernen 110
4.23 Die Vereinigungs-, Schnitt- oder Differenzmenge zweier Arrays ermitteln 111
4.24 Alle Elementkombinationen eines Arrays finden 113
4.25 Alle Permutationen eines Arrays finden 115
4.26 Programm: Ein Array horizontal angeordnet in einer HTML-Tabelle ausgeben 118
5
Variablen 121
5.1 Die Verwechslung von == und = vermeiden 122
5.2 Einen Vorgabewert festlegen 123
5.3 Werte ohne Hilfe von temporären Variablen austauschen 124
5.4 Einen dynamischen Variablennamen erzeugen 125
5.5 Statische Variablen verwenden 126
5.6 Variablen in mehreren Prozessen gemeinsam verwenden 128
5.7 Komplexe Daten als String kapseln 130
5.8 Variableninhalte als Strings ausgeben 131
6
Funktionen 135
6.1 Auf Funktionsparameter zugreifen 136
6.2 Vorgabewerte für Funktionsparameter festlegen 137
6.3 Werte als Referenzen übergeben 139
6.4 Benannte Parameter verwenden 140
6.5 Funktionen mit einer variablen Anzahl von Argumenten verwenden 142
6.6 Werte per Referenz zurückgeben 144
6.7 Mehr als einen Wert zurückgeben 145
6.8 Bestimmte Rückgabewerte überspringen 147
6.9 Fehlermeldungen zurückgeben 148
6.10 Variable Funktionen aufrufen 150
6.11 Innerhalb einer Funktion auf eine globale Variable zugreifen 151
6.12 Dynamische Funktionen erzeugen 153
6.13 Objekt-Datentypen für Funktionsparameter vorschreiben 153
7
Klassen und Objekte 155
7.1 Objekte instanziieren 161
7.2 Objekte kopieren (klonen) 162
7.3 Ein Objekt durch eine Unterklasse erweitern 164
7.4 Auf eine überschriebene Methode zugreifen 166
7.5 Eigenschaften und Methoden verstecken 168
7.6 Objekt-Konstruktoren definieren 170
7.7 Ein Objekt zerstören 172
7.8 Eigenschaften mit _ _set() und _ _get() überladen 173
7.9 Schreib- oder lesegeschützte Eigenschaften implementieren 176
7.10 Methoden mit _ _call() überladen 178
7.11 Methoden und Eigenschaften einer Klasse ermitteln 180
7.12 Ein Objekt wie ein Array verwenden 182
7.13 Polymorphe Methoden verwenden 184
7.14 Objekt-Schnittstellen durch Interfaces standardisieren 186
7.15 Einem Basisobjekt zusätzliche Eigenschaften hinzufügen 189
7.16 Eine Klasse dynamisch erzeugen 190
7.17 Ein Objekt dynamisch instanziieren 191
8
Effizienter Umgang mit Daten 193
8.1 Über die Eigenschaften eines Objekt iterieren 195
8.2 Einfache Objekt-Iteration mit IteratorAggregate und ArrayObject 196
8.3 Einen eigenen Iterator implementieren 198
8.4 Einen eigenen Wrapper für Streams schreiben 202
8.5 Einen Stream filtern 206
8.6 Eigene Filter schreiben 207
9
Fehlerbehandlung mit Exceptions 210
9.1 PHP-Fehler- und Warnmeldungen in Ausnahmen umwandeln 212
9.2 Ausnahmen abfangen 213
9.3 Eigene Ausnahmen werfen 214
9.4 Klassenabhängiges Exception-Handling 216
10
Web-Grundlagen 218
10.1 Cookies setzen 219
10.2 Cookie-Werte lesen 221
10.3 Cookies löschen 222
10.4 Zu einer anderen Adresse umleiten 223
10.5 Sitzungen verfolgen 224
10.6 Sessions in einer Datenbank speichern 225
10.7 Verschiedene Browser erkennen 229
10.8 Einen GET-Query-String bilden 231
10.9 HTTP-Basic-Authentifizierung einsetzen #
10.10 Cookie-Authentifizierung verwenden 235
10.11 Ausgaben vorzeitig an den Browser senden 238
10.12 Ausgaben an den Browser zwischenspeichern 239
10.13 Web-Ausgaben mit gzip komprimieren 240
10.14 Fehlermeldungen vor Anwendern verbergen 241
10.15 Einstellungen zur Fehlerbehandlung vornehmen 242
10.16 Eine benutzerdefinierte Funktion zur Fehlerbehandlung verwenden 244
10.17 Fehler protokollieren 246
10.18 Den Fehler "headers already sent" vermeiden 247
10.19 Debug-Informationen protokollieren 248
10.20 Umgebungsvariablen lesen 251
10.21 Umgebungsvariablen setzen 252
10.22 Konfigurationsvariablen lesen 253
10.23 Konfigurationsvariablen setzen 254
10.24 Innerhalb von Apache kommunizieren 255
10.25 Code-Profile generieren 257
10.26 Geänderte Dateien herunterladen und unveränderte vom Browser cachen lassen 260
10.27 Programm: (De-)Aktivator für Website-Konten 263
10.28 Programm: Störungsprüfer 265
11
Formulare 272
11.1 Formulareingaben verarbeiten 274
11.2 Formulareingaben prüfen 276
11.3 Mit mehrseitigen Formularen arbeiten 278
11.4 Formulare mit erhaltenen Informationen und Fehlermeldungen erneut anzeigen 281
11.5 Mehrfaches Absenden desselben Formulars verhindern 284
11.6 Hochgeladene Dateien verarbeiten 286
11.7 Die Formularverarbeitung durch PHP absichern 288
11.8 Steuerzeichen in Benutzerdaten durch Escape-Sequenzen ersetzen 290
11.9 Mit Formularvariablen arbeiten, deren Name einen Punkt enthält 291
11.10 Formularelemente mit Mehrfachoptionen verwenden 292
11.11 Drop-down-Menüs auf Basis des aktuellen Datums erzeugen 294
12
Zugriff auf Datenbanken 296
12.1 Textdateien als Datenbanken verwenden 303
12.2 DBM-Datenbanken verwenden 304
12.3 Eine SQLite-Datenbank einrichten 308
12.4 Die Verbindung mit einer SQL-Datenbank herstellen 310
12.5 Eine SQL-Datenbank abfragen 312
12.6 Zeilen ohne Schleifen einlesen 314
12.7 Daten in einer SQL-Datenbank verändern 316
12.8 Abfragen effizient wiederholen 317
12.9 Feststellen, wie viele Zeilen eine Abfrage zurückgegeben hat 319
12.10 Behandlung von Anführungszeichen 320
12.11 Debug-Informationen und Fehler protokollieren 322
12.12 Eindeutige Kennzeichen automatisch zuweisen 325
12.13 Abfragen programmgesteuert erstellen 326
12.14 Paginierte Links für eine Reihe von Datensätzen generieren 331
12.15 Abfragen und Ergebnisse zwischenspeichern 335
12.16 Eine SSL-Verbindung zu einer MySQLi-Datenbank herstellen 337
12.17 Programm: Ein Diskussionsforum speichern 339
13
Web-Automatisierung 347
13.1 Eine URL mit der GET-Methode abrufen 349
13.2 Eine URL mit der POST-Methode abrufen 351
13.3 Eine URL mit Cookies abrufen 352
13.4 Eine URL mit Headern abrufen 354
13.5 Eine HTTPS-URL abrufen 356
13.6 Den Datenaustauch auf HTTP-Ebene debuggen 356
13.7 Eine Webseite mit Markup versehen 359
13.8 Links aus einer HTML-Datei extrahieren 361
13.9 ASCII in HTML konvertieren 362
13.10 HTML in ASCII konvertieren 363
13.11 HTML- und PHP-Tags entfernen 364
13.12 Smarty-Templates einsetzen 365
13.13 Die Protokolldatei eines Webservers analysieren 367
13.14 Programm: Veraltete Links finden 369
13.15 Programm: Aktualisierte Links herausfinden 372
14
XML 375
14.1 XML manuell generieren 377
14.2 XML mit DOM generieren 380
14.3 XML-Dokumente mit xmlWriter generieren 383
14.4 XML-Daten mit DOM parsen 386
14.5 XML mit SAX parsen 389
14.6 XML mit SimpleXML parsen 394
14.7 Daten zwischen DOM und SimpleXML austauschen 398
14.8 XML mit xmlReader parsen 401
14.9 XML mit XSLT transformieren 407
14.10 PHP-Funktionen in XSL-Stylesheets verwenden 409
14.11 Informationen aus einem XML-Dokument selektieren 413
14.12 XML-Dokumente für Menschen lesbar machen 418
14.13 XML-Dokumente aus PHP-Datenstrukturen erzeugen 422
14.14 XML-Dokumente in PHP-Arrays oder Objekte einlesen 425
15
Webservices 431
15.1 XML-RPC-Anfragen senden 432
15.2 XML-RPC-Anfragen empfangen 435
15.3 XML-RPC-Anfragen mit der XMLRPCi-Erweiterung senden 438
15.4 SOAP-Anfragen mit einem WSDL-Dokument senden 440
15.5 SOAP-Anfragen ohne ein WSDL-Dokument senden 444
15.6 SOAP-Anfragen empfangen 448
15.7 Anfragen an den Amazon-Webservice senden 452
15.8 Anfragen an den eBay-Webservice senden 457
15.9 RSS-Feeds lesen 461
15.10 REST-Anfragen senden 464
15.11 Daten mit WDDX austauschen 469
16
Reguläre Ausdrücke 472
16.1 Von ereg zu preg wechseln 475
16.2 Wörter suchen 477
16.3 Den n-ten Match finden 478
16.4 Zwischen gierigem und nicht-gierigem Matching wählen 479
16.5 E-Mail-Adressen validieren 481
16.6 Alle zu einem Muster passenden Zeilen in einer Datei finden 485
16.7 Text innerhalb von HTML-Tags finden 485
16.8 In regulären Ausdrücken Sonderzeichen verwenden 487
16.9 Datensätze lesen, bei denen ein Muster als Separator dient 489
17
Verschlüsselung und Sicherheit 491
17.1 Passwörter aus den Dateien Ihrer Site heraushalten 493
17.2 Daten durch Kodierung verschleiern 494
17.3 Daten durch Prüfsummen verifizieren 495
17.4 Passwörter speichern 496
17.5 Überprüfung der Passwortsicherheit 498
17.6 Was tun bei verlorenen Passwörtern? 500
17.7 Daten ver- und entschlüsseln 502
17.8 Verschlüsselte Daten in einer Datei oder Datenbank speichern 506
17.9 Verschlüsselte Daten gemeinsam mit einer anderen Website nutzen 509
17.10 SSL ermitteln 511
17.11 E-Mail mit GPG verschlüsseln 512
18
Grafik 515
18.1 Linien, Rechtecke und Vielecke zeichnen 519
18.2 Bogen, Ellipsen und Kreise zeichnen 520
18.3 Unterbrochene Linien zeichnen 522
18.4 Text zeichnen 524
18.5 Zentrierten Text zeichnen 526
18.6 Dynamische Bilder zusammensetzen 531
18.7 Eine transparente Farbe ermitteln und einstellen 534
18.8 Programm: Heraufgeladene Digitalfotos auf Webformat verkleinern 535
18.9 Grafiken geschützt ausgeben 538
18.10 Programm: Aus Umfrageergebnissen Balkendiagramme erstellen 540
19
Internationalisierung und Lokalisierung 544
19.1 Vorhandene Locales auflisten 546
19.2 Ein bestimmtes Locale verwenden 546
19.3 Das Default-Locale setzen 548
19.4 Textmeldungen lokalisieren 548
19.5 Datum und Uhrzeiten lokalisieren 552
19.6 Lokalisierung von Währungen 553
19.7 Bilder lokalisieren 555
19.8 Eingebundene Dateien lokalisieren 557
19.9 Lokalisierungsressourcen verwalten 558
19.10 gettext verwenden 560
19.11 Unicode-Zeichen lesen und ausgeben 561
20
Internetdienste 564
20.1 E-Mails senden 565
20.2 MIME-Mail senden 568
20.3 E-Mail mit IMAP oder POP3 lesen 571
20.4 Nachrichten an Usenet-Newsgruppen senden 574
20.5 Usenet-Nachrichten lesen 576
20.6 Dateien mit FTP herauf- und herunterladen 581
20.7 Adressen über LDAP abfragen 584
20.8 LDAP zur Benutzer-Authentifizierung verwenden 586
20.9 DNS-Lookups ausführen 588
20.10 Überprüfen, ob ein Host erreichbar ist 590
20.11 Informationen über einen Domainnamen herausfinden 592
21
Dateien 594
21.1 Eine lokale Datei erstellen oder öffnen 598
21.2 Eine temporäre Datei erstellen 599
21.3 Eine Datei auf einem entfernten Server öffnen 600
21.4 Eine Datei in einen String einlesen 602
21.5 Einen String in eine Datei schreiben 603
21.6 Die Zeilen, Absätze oder Datensätze in einer Datei zählen 604
21.7 Jedes Wort einer Datei verarbeiten 606
21.8 Eine bestimmte Zeile einer Datei einlesen 608
21.9 Eine Datei zeilen- oder absatzweise in rückwärtiger Reihenfolge bearbeiten 609
21.10 Eine Zeile per Zufall aus einer Datei auswählen 609
21.11 Alle Zeilen einer Datei in eine Zufallsreihenfolge bringen 610
21.12 Textfelder variabler Länge verarbeiten 611
21.13 Konfigurationsdateien einlesen 612
21.14 Von einer bestimmten Stelle einer Datei lesen oder an eine bestimmte Stelle einer Datei schreiben 615
21.15 Die letzte Zeile einer Datei entfernen 616
21.16 Eine Datei an ihrem Platz ohne eine temporäre Datei ändern 618
21.17 Gepufferte Ausgabedaten in eine Datei schreiben 620
21.18 An viele Datei-Handles gleichzeitig schreiben 621
21.19 Metazeichen der Shell mit Escape-Zeichen versehen 622
21.20 Einem Programm Eingabedaten durchgeben 624
21.21 Die Standardausgabe eines Programms lesen 624
21.22 Den Standardfehlerkanal eines Programms einlesen 626
21.23 Eine Datei sperren 627
21.24 Komprimierte Dateien lesen und schreiben 630
21.25 Programm: Unzip 632
22
Verzeichnisse 634
22.1 Zeitstempel auslesen und setzen 637
22.2 Auf Dateiinformationen zugreifen 638
22.3 Dateiberechtigungen oder Dateieigentümerschaft ändern 640
22.4 Einen Dateinamen in seine Bestandteile zerlegen 641
22.5 Eine Datei löschen 642
22.6 Eine Datei kopieren oder verschieben bzw. umbenennen 643
22.7 Alle Dateien in einem Verzeichnis bearbeiten 643
22.8 Eine Liste von Dateinamen finden, die einem bestimmten Muster entspricht 645
22.9 Dateien eines Verzeichnisses filtern 646
22.10 Neue Verzeichnisse erstellen 647
22.11 Ein Verzeichnis und seinen Inhalt löschen 649
22.12 Programm: Eine Auflistung des Webserver-Verzeichnisses erstellen 649
22.13 Programm: Site-Suche 654
23
PHP auf der Kommandozeile 659
23.1 Programmparameter parsen 661
23.2 Programmparameter mit Console_Getopt oder Console_Getargs parsen 662
23.3 Von der Tastatur lesen 669
23.4 Passwörter einlesen 670
23.5 Die Ausgabe eines Kommandozeilen-Befehls weiterverarbeiten 673
23.6 Dateien zeilenweise verarbeiten 675
23.7 Prozesse forken 678
23.8 Einen Server programmieren 681
24
PEAR 685
24.1 PEAR installieren 686
24.2 Den PEAR Package Manager verwenden 690
24.3 PEAR-Pakete installieren und deinstallieren 692
24.4 PEAR-Pakete upgraden 694
24.5 PECL-Pakete installieren 696
24.6 Pakete aus anderen Channels installieren 698
24.7 PEAR in Shared-Hosting-Umgebungen installieren 703
24.8 Eigene PEAR-Pakete erstellen 708
24.9 Eigene Pakete über einen Channel-Server vertreiben 714
Index 725
Inhaltsverzeichnis
Einleitung XV
1
Strings 1
1.1 Auf Teil-Strings zugreifen 4
1.2 Teile von Strings ersetzen 5
1.3 Einen String zeichenweise verarbeiten 6
1.4 Einen String wort- oder zeichenweise umkehren 8
1.5 Tabulatoren expandieren und komprimieren 8
1.6 Die Groß- und Kleinschreibung in Texten ändern 10
1.7 Funktionen und Ausdrücke in Strings interpolieren 12
1.8 Leerzeichen aus einem String entfernen 13
1.9 Kommaseparierte Daten zerlegen 14
1.10 Begrenzte Daten mit fester Länge zerlegen 15
1.11 Strings aufteilen 18
1.12 Text an bestimmten Zeilenlängen umbrechen 20
1.13 Binärdaten in einem String speichern 22
2
Zahlen 25
2.1 Prüfen, ob ein String eine gültige Zahl enthält 26
2.2 Fließkommazahlen vergleichen 27
2.3 Fließkommazahlen runden 28
2.4 Mit Bereichen von Integer-Zahlen arbeiten 29
2.5 Zufallszahlen innerhalb eines Bereichs generieren 30
2.6 Verzerrte Zufallszahlen generieren 32
2.7 Logarithmen berechnen 33
2.8 Potenzen berechnen 34
2.9 Zahlen formatieren 35
2.10 Den Plural korrekt ausgeben 36
2.11 Trigonometrische Funktionen berechnen 37
2.12 Trigonometrische Funktionen mit Graden anstelle von Bogenmaßen berechnen 38
2.13 Mit sehr großen oder kleinen Zahlen arbeiten 39
2.14 Zwischen Zahlensystemen konvertieren 40
2.15 Mit anderen Zahlen als Dezimalzahlen rechnen 41
3
Datum und Zeit 43
3.1 Das aktuelle Datum und die aktuelle Zeit feststellen 45
3.2 Datums- und Zeitbestandteile in einen Epochen-Zeitstempel konvertieren 47
3.3 Einen Epochen-Zeitstempel in Zeit- und Datumsbestandteile konvertieren 49
3.4 Datum oder Zeit in einem bestimmten Format ausgeben 50
3.5 Die Differenz zwischen zwei Datumswerten berechnen 54
3.6 Den Abstand zwischen zwei Datumswerten über Julianische Tage ermitteln 56
3.7 Den Tag der Woche, des Monats, des Jahres oder die Kalenderwoche des Jahres ermitteln 57
3.8 Ein Datum validieren 59
3.9 Datums- und Zeitwerte aus Strings lesen 61
3.10 Addition und Subtraktion mit einem Datum 63
3.11 Die Zeit mit Zeitzonen berechnen 64
3.12 Die Sommerzeit berücksichtigen 69
3.13 Zeitangaben mit hoher Genauigkeit generieren 70
3.14 Zeiträume generieren 71
3.15 Andere Kalender als den Gregorianischen verwenden 73
3.16 Programm: Kalender 74
4
Arrays 77
4.1 Ein Array anlegen, das nicht mit dem Element 0 beginnt 80
4.2 Mehrere Array-Elemente unter einem Schlüssel speichern 81
4.3 Ein Array mit einer Folge von Integer-Werten initialisieren 83
4.4 Ein Array durchlaufen 83
4.5 Elemente aus einem Array löschen 86
4.6 Die Größe eines Arrays ändern 88
4.7 Ein Array an ein anderes anfügen 90
4.8 Ein Array in einen String verwandeln 92
4.9 Ein Array mit Kommata ausgeben 94
4.10 Prüfen, ob sich ein Schlüssel in einem Array befindet 95
4.11 Prüfen, ob sich ein Element in einem Array befindet 96
4.12 Die Position eines Elements in einem Array feststellen 97
4.13 Elemente finden, die einer bestimmten Prüfung standhalten 98
4.14 Das Array-Element mit dem größten oder kleinsten Wert finden 100
4.15 Ein Array umkehren 101
4.16 Ein Array sortieren 101
4.17 Ein Array über ein berechnetes Feld sortieren 103
4.18 Mehrere Arrays sortieren 105
4.19 Ein Array mit Hilfe einer Methode statt einer Funktion sortieren 107
4.20 Ein Array in eine zufällige Reihenfolge bringen 108
4.21 Einen Kartenstapel mischen 109
4.22 Doppelte Elemente aus einem Array entfernen 110
4.23 Die Vereinigungs-, Schnitt- oder Differenzmenge zweier Arrays ermitteln 111
4.24 Alle Elementkombinationen eines Arrays finden 113
4.25 Alle Permutationen eines Arrays finden 115
4.26 Programm: Ein Array horizontal angeordnet in einer HTML-Tabelle ausgeben 118
5
Variablen 121
5.1 Die Verwechslung von == und = vermeiden 122
5.2 Einen Vorgabewert festlegen 123
5.3 Werte ohne Hilfe von temporären Variablen austauschen 124
5.4 Einen dynamischen Variablennamen erzeugen 125
5.5 Statische Variablen verwenden 126
5.6 Variablen in mehreren Prozessen gemeinsam verwenden 128
5.7 Komplexe Daten als String kapseln 130
5.8 Variableninhalte als Strings ausgeben 131
6
Funktionen 135
6.1 Auf Funktionsparameter zugreifen 136
6.2 Vorgabewerte für Funktionsparameter festlegen 137
6.3 Werte als Referenzen übergeben 139
6.4 Benannte Parameter verwenden 140
6.5 Funktionen mit einer variablen Anzahl von Argumenten verwenden 142
6.6 Werte per Referenz zurückgeben 144
6.7 Mehr als einen Wert zurückgeben 145
6.8 Bestimmte Rückgabewerte überspringen 147
6.9 Fehlermeldungen zurückgeben 148
6.10 Variable Funktionen aufrufen 150
6.11 Innerhalb einer Funktion auf eine globale Variable zugreifen 151
6.12 Dynamische Funktionen erzeugen 153
6.13 Objekt-Datentypen für Funktionsparameter vorschreiben 153
7
Klassen und Objekte 155
7.1 Objekte instanziieren 161
7.2 Objekte kopieren (klonen) 162
7.3 Ein Objekt durch eine Unterklasse erweitern 164
7.4 Auf eine überschriebene Methode zugreifen 166
7.5 Eigenschaften und Methoden verstecken 168
7.6 Objekt-Konstruktoren definieren 170
7.7 Ein Objekt zerstören 172
7.8 Eigenschaften mit _ _set() und _ _get() überladen 173
7.9 Schreib- oder lesegeschützte Eigenschaften implementieren 176
7.10 Methoden mit _ _call() überladen 178
7.11 Methoden und Eigenschaften einer Klasse ermitteln 180
7.12 Ein Objekt wie ein Array verwenden 182
7.13 Polymorphe Methoden verwenden 184
7.14 Objekt-Schnittstellen durch Interfaces standardisieren 186
7.15 Einem Basisobjekt zusätzliche Eigenschaften hinzufügen 189
7.16 Eine Klasse dynamisch erzeugen 190
7.17 Ein Objekt dynamisch instanziieren 191
8
Effizienter Umgang mit Daten 193
8.1 Über die Eigenschaften eines Objekt iterieren 195
8.2 Einfache Objekt-Iteration mit IteratorAggregate und ArrayObject 196
8.3 Einen eigenen Iterator implementieren 198
8.4 Einen eigenen Wrapper für Streams schreiben 202
8.5 Einen Stream filtern 206
8.6 Eigene Filter schreiben 207
9
Fehlerbehandlung mit Exceptions 210
9.1 PHP-Fehler- und Warnmeldungen in Ausnahmen umwandeln 212
9.2 Ausnahmen abfangen 213
9.3 Eigene Ausnahmen werfen 214
9.4 Klassenabhängiges Exception-Handling 216
10
Web-Grundlagen 218
10.1 Cookies setzen 219
10.2 Cookie-Werte lesen 221
10.3 Cookies löschen 222
10.4 Zu einer anderen Adresse umleiten 223
10.5 Sitzungen verfolgen 224
10.6 Sessions in einer Datenbank speichern 225
10.7 Verschiedene Browser erkennen 229
10.8 Einen GET-Query-String bilden 231
10.9 HTTP-Basic-Authentifizierung einsetzen #
10.10 Cookie-Authentifizierung verwenden 235
10.11 Ausgaben vorzeitig an den Browser senden 238
10.12 Ausgaben an den Browser zwischenspeichern 239
10.13 Web-Ausgaben mit gzip komprimieren 240
10.14 Fehlermeldungen vor Anwendern verbergen 241
10.15 Einstellungen zur Fehlerbehandlung vornehmen 242
10.16 Eine benutzerdefinierte Funktion zur Fehlerbehandlung verwenden 244
10.17 Fehler protokollieren 246
10.18 Den Fehler "headers already sent" vermeiden 247
10.19 Debug-Informationen protokollieren 248
10.20 Umgebungsvariablen lesen 251
10.21 Umgebungsvariablen setzen 252
10.22 Konfigurationsvariablen lesen 253
10.23 Konfigurationsvariablen setzen 254
10.24 Innerhalb von Apache kommunizieren 255
10.25 Code-Profile generieren 257
10.26 Geänderte Dateien herunterladen und unveränderte vom Browser cachen lassen 260
10.27 Programm: (De-)Aktivator für Website-Konten 263
10.28 Programm: Störungsprüfer 265
11
Formulare 272
11.1 Formulareingaben verarbeiten 274
11.2 Formulareingaben prüfen 276
11.3 Mit mehrseitigen Formularen arbeiten 278
11.4 Formulare mit erhaltenen Informationen und Fehlermeldungen erneut anzeigen 281
11.5 Mehrfaches Absenden desselben Formulars verhindern 284
11.6 Hochgeladene Dateien verarbeiten 286
11.7 Die Formularverarbeitung durch PHP absichern 288
11.8 Steuerzeichen in Benutzerdaten durch Escape-Sequenzen ersetzen 290
11.9 Mit Formularvariablen arbeiten, deren Name einen Punkt enthält 291
11.10 Formularelemente mit Mehrfachoptionen verwenden 292
11.11 Drop-down-Menüs auf Basis des aktuellen Datums erzeugen 294
12
Zugriff auf Datenbanken 296
12.1 Textdateien als Datenbanken verwenden 303
12.2 DBM-Datenbanken verwenden 304
12.3 Eine SQLite-Datenbank einrichten 308
12.4 Die Verbindung mit einer SQL-Datenbank herstellen 310
12.5 Eine SQL-Datenbank abfragen 312
12.6 Zeilen ohne Schleifen einlesen 314
12.7 Daten in einer SQL-Datenbank verändern 316
12.8 Abfragen effizient wiederholen 317
12.9 Feststellen, wie viele Zeilen eine Abfrage zurückgegeben hat 319
12.10 Behandlung von Anführungszeichen 320
12.11 Debug-Informationen und Fehler protokollieren 322
12.12 Eindeutige Kennzeichen automatisch zuweisen 325
12.13 Abfragen programmgesteuert erstellen 326
12.14 Paginierte Links für eine Reihe von Datensätzen generieren 331
12.15 Abfragen und Ergebnisse zwischenspeichern 335
12.16 Eine SSL-Verbindung zu einer MySQLi-Datenbank herstellen 337
12.17 Programm: Ein Diskussionsforum speichern 339
13
Web-Automatisierung 347
13.1 Eine URL mit der GET-Methode abrufen 349
13.2 Eine URL mit der POST-Methode abrufen 351
13.3 Eine URL mit Cookies abrufen 352
13.4 Eine URL mit Headern abrufen 354
13.5 Eine HTTPS-URL abrufen 356
13.6 Den Datenaustauch auf HTTP-Ebene debuggen 356
13.7 Eine Webseite mit Markup versehen 359
13.8 Links aus einer HTML-Datei extrahieren 361
13.9 ASCII in HTML konvertieren 362
13.10 HTML in ASCII konvertieren 363
13.11 HTML- und PHP-Tags entfernen 364
13.12 Smarty-Templates einsetzen 365
13.13 Die Protokolldatei eines Webservers analysieren 367
13.14 Programm: Veraltete Links finden 369
13.15 Programm: Aktualisierte Links herausfinden 372
14
XML 375
14.1 XML manuell generieren 377
14.2 XML mit DOM generieren 380
14.3 XML-Dokumente mit xmlWriter generieren 383
14.4 XML-Daten mit DOM parsen 386
14.5 XML mit SAX parsen 389
14.6 XML mit SimpleXML parsen 394
14.7 Daten zwischen DOM und SimpleXML austauschen 398
14.8 XML mit xmlReader parsen 401
14.9 XML mit XSLT transformieren 407
14.10 PHP-Funktionen in XSL-Stylesheets verwenden 409
14.11 Informationen aus einem XML-Dokument selektieren 413
14.12 XML-Dokumente für Menschen lesbar machen 418
14.13 XML-Dokumente aus PHP-Datenstrukturen erzeugen 422
14.14 XML-Dokumente in PHP-Arrays oder Objekte einlesen 425
15
Webservices 431
15.1 XML-RPC-Anfragen senden 432
15.2 XML-RPC-Anfragen empfangen 435
15.3 XML-RPC-Anfragen mit der XMLRPCi-Erweiterung senden 438
15.4 SOAP-Anfragen mit einem WSDL-Dokument senden 440
15.5 SOAP-Anfragen ohne ein WSDL-Dokument senden 444
15.6 SOAP-Anfragen empfangen 448
15.7 Anfragen an den Amazon-Webservice senden 452
15.8 Anfragen an den eBay-Webservice senden 457
15.9 RSS-Feeds lesen 461
15.10 REST-Anfragen senden 464
15.11 Daten mit WDDX austauschen 469
16
Reguläre Ausdrücke 472
16.1 Von ereg zu preg wechseln 475
16.2 Wörter suchen 477
16.3 Den n-ten Match finden 478
16.4 Zwischen gierigem und nicht-gierigem Matching wählen 479
16.5 E-Mail-Adressen validieren 481
16.6 Alle zu einem Muster passenden Zeilen in einer Datei finden 485
16.7 Text innerhalb von HTML-Tags finden 485
16.8 In regulären Ausdrücken Sonderzeichen verwenden 487
16.9 Datensätze lesen, bei denen ein Muster als Separator dient 489
17
Verschlüsselung und Sicherheit 491
17.1 Passwörter aus den Dateien Ihrer Site heraushalten 493
17.2 Daten durch Kodierung verschleiern 494
17.3 Daten durch Prüfsummen verifizieren 495
17.4 Passwörter speichern 496
17.5 Überprüfung der Passwortsicherheit 498
17.6 Was tun bei verlorenen Passwörtern? 500
17.7 Daten ver- und entschlüsseln 502
17.8 Verschlüsselte Daten in einer Datei oder Datenbank speichern 506
17.9 Verschlüsselte Daten gemeinsam mit einer anderen Website nutzen 509
17.10 SSL ermitteln 511
17.11 E-Mail mit GPG verschlüsseln 512
18
Grafik 515
18.1 Linien, Rechtecke und Vielecke zeichnen 519
18.2 Bogen, Ellipsen und Kreise zeichnen 520
18.3 Unterbrochene Linien zeichnen 522
18.4 Text zeichnen 524
18.5 Zentrierten Text zeichnen 526
18.6 Dynamische Bilder zusammensetzen 531
18.7 Eine transparente Farbe ermitteln und einstellen 534
18.8 Programm: Heraufgeladene Digitalfotos auf Webformat verkleinern 535
18.9 Grafiken geschützt ausgeben 538
18.10 Programm: Aus Umfrageergebnissen Balkendiagramme erstellen 540
19
Internationalisierung und Lokalisierung 544
19.1 Vorhandene Locales auflisten 546
19.2 Ein bestimmtes Locale verwenden 546
19.3 Das Default-Locale setzen 548
19.4 Textmeldungen lokalisieren 548
19.5 Datum und Uhrzeiten lokalisieren 552
19.6 Lokalisierung von Währungen 553
19.7 Bilder lokalisieren 555
19.8 Eingebundene Dateien lokalisieren 557
19.9 Lokalisierungsressourcen verwalten 558
19.10 gettext verwenden 560
19.11 Unicode-Zeichen lesen und ausgeben 561
20
Internetdienste 564
20.1 E-Mails senden 565
20.2 MIME-Mail senden 568
20.3 E-Mail mit IMAP oder POP3 lesen 571
20.4 Nachrichten an Usenet-Newsgruppen senden 574
20.5 Usenet-Nachrichten lesen 576
20.6 Dateien mit FTP herauf- und herunterladen 581
20.7 Adressen über LDAP abfragen 584
20.8 LDAP zur Benutzer-Authentifizierung verwenden 586
20.9 DNS-Lookups ausführen 588
20.10 Überprüfen, ob ein Host erreichbar ist 590
20.11 Informationen über einen Domainnamen herausfinden 592
21
Dateien 594
21.1 Eine lokale Datei erstellen oder öffnen 598
21.2 Eine temporäre Datei erstellen 599
21.3 Eine Datei auf einem entfernten Server öffnen 600
21.4 Eine Datei in einen String einlesen 602
21.5 Einen String in eine Datei schreiben 603
21.6 Die Zeilen, Absätze oder Datensätze in einer Datei zählen 604
21.7 Jedes Wort einer Datei verarbeiten 606
21.8 Eine bestimmte Zeile einer Datei einlesen 608
21.9 Eine Datei zeilen- oder absatzweise in rückwärtiger Reihenfolge bearbeiten 609
21.10 Eine Zeile per Zufall aus einer Datei auswählen 609
21.11 Alle Zeilen einer Datei in eine Zufallsreihenfolge bringen 610
21.12 Textfelder variabler Länge verarbeiten 611
21.13 Konfigurationsdateien einlesen 612
21.14 Von einer bestimmten Stelle einer Datei lesen oder an eine bestimmte Stelle einer Datei schreiben 615
21.15 Die letzte Zeile einer Datei entfernen 616
21.16 Eine Datei an ihrem Platz ohne eine temporäre Datei ändern 618
21.17 Gepufferte Ausgabedaten in eine Datei schreiben 620
21.18 An viele Datei-Handles gleichzeitig schreiben 621
21.19 Metazeichen der Shell mit Escape-Zeichen versehen 622
21.20 Einem Programm Eingabedaten durchgeben 624
21.21 Die Standardausgabe eines Programms lesen 624
21.22 Den Standardfehlerkanal eines Programms einlesen 626
21.23 Eine Datei sperren 627
21.24 Komprimierte Dateien lesen und schreiben 630
21.25 Programm: Unzip 632
22
Verzeichnisse 634
22.1 Zeitstempel auslesen und setzen 637
22.2 Auf Dateiinformationen zugreifen 638
22.3 Dateiberechtigungen oder Dateieigentümerschaft ändern 640
22.4 Einen Dateinamen in seine Bestandteile zerlegen 641
22.5 Eine Datei löschen 642
22.6 Eine Datei kopieren oder verschieben bzw. umbenennen 643
22.7 Alle Dateien in einem Verzeichnis bearbeiten 643
22.8 Eine Liste von Dateinamen finden, die einem bestimmten Muster entspricht 645
22.9 Dateien eines Verzeichnisses filtern 646
22.10 Neue Verzeichnisse erstellen 647
22.11 Ein Verzeichnis und seinen Inhalt löschen 649
22.12 Programm: Eine Auflistung des Webserver-Verzeichnisses erstellen 649
22.13 Programm: Site-Suche 654
23
PHP auf der Kommandozeile 659
23.1 Programmparameter parsen 661
23.2 Programmparameter mit Console_Getopt oder Console_Getargs parsen 662
23.3 Von der Tastatur lesen 669
23.4 Passwörter einlesen 670
23.5 Die Ausgabe eines Kommandozeilen-Befehls weiterverarbeiten 673
23.6 Dateien zeilenweise verarbeiten 675
23.7 Prozesse forken 678
23.8 Einen Server programmieren 681
24
PEAR 685
24.1 PEAR installieren 686
24.2 Den PEAR Package Manager verwenden 690
24.3 PEAR-Pakete installieren und deinstallieren 692
24.4 PEAR-Pakete upgraden 694
24.5 PECL-Pakete installieren 696
24.6 Pakete aus anderen Channels installieren 698
24.7 PEAR in Shared-Hosting-Umgebungen installieren 703
24.8 Eigene PEAR-Pakete erstellen 708
24.9 Eigene Pakete über einen Channel-Server vertreiben 714
Index 725
Einleitung XV
1
Strings 1
1.1 Auf Teil-Strings zugreifen 4
1.2 Teile von Strings ersetzen 5
1.3 Einen String zeichenweise verarbeiten 6
1.4 Einen String wort- oder zeichenweise umkehren 8
1.5 Tabulatoren expandieren und komprimieren 8
1.6 Die Groß- und Kleinschreibung in Texten ändern 10
1.7 Funktionen und Ausdrücke in Strings interpolieren 12
1.8 Leerzeichen aus einem String entfernen 13
1.9 Kommaseparierte Daten zerlegen 14
1.10 Begrenzte Daten mit fester Länge zerlegen 15
1.11 Strings aufteilen 18
1.12 Text an bestimmten Zeilenlängen umbrechen 20
1.13 Binärdaten in einem String speichern 22
2
Zahlen 25
2.1 Prüfen, ob ein String eine gültige Zahl enthält 26
2.2 Fließkommazahlen vergleichen 27
2.3 Fließkommazahlen runden 28
2.4 Mit Bereichen von Integer-Zahlen arbeiten 29
2.5 Zufallszahlen innerhalb eines Bereichs generieren 30
2.6 Verzerrte Zufallszahlen generieren 32
2.7 Logarithmen berechnen 33
2.8 Potenzen berechnen 34
2.9 Zahlen formatieren 35
2.10 Den Plural korrekt ausgeben 36
2.11 Trigonometrische Funktionen berechnen 37
2.12 Trigonometrische Funktionen mit Graden anstelle von Bogenmaßen berechnen 38
2.13 Mit sehr großen oder kleinen Zahlen arbeiten 39
2.14 Zwischen Zahlensystemen konvertieren 40
2.15 Mit anderen Zahlen als Dezimalzahlen rechnen 41
3
Datum und Zeit 43
3.1 Das aktuelle Datum und die aktuelle Zeit feststellen 45
3.2 Datums- und Zeitbestandteile in einen Epochen-Zeitstempel konvertieren 47
3.3 Einen Epochen-Zeitstempel in Zeit- und Datumsbestandteile konvertieren 49
3.4 Datum oder Zeit in einem bestimmten Format ausgeben 50
3.5 Die Differenz zwischen zwei Datumswerten berechnen 54
3.6 Den Abstand zwischen zwei Datumswerten über Julianische Tage ermitteln 56
3.7 Den Tag der Woche, des Monats, des Jahres oder die Kalenderwoche des Jahres ermitteln 57
3.8 Ein Datum validieren 59
3.9 Datums- und Zeitwerte aus Strings lesen 61
3.10 Addition und Subtraktion mit einem Datum 63
3.11 Die Zeit mit Zeitzonen berechnen 64
3.12 Die Sommerzeit berücksichtigen 69
3.13 Zeitangaben mit hoher Genauigkeit generieren 70
3.14 Zeiträume generieren 71
3.15 Andere Kalender als den Gregorianischen verwenden 73
3.16 Programm: Kalender 74
4
Arrays 77
4.1 Ein Array anlegen, das nicht mit dem Element 0 beginnt 80
4.2 Mehrere Array-Elemente unter einem Schlüssel speichern 81
4.3 Ein Array mit einer Folge von Integer-Werten initialisieren 83
4.4 Ein Array durchlaufen 83
4.5 Elemente aus einem Array löschen 86
4.6 Die Größe eines Arrays ändern 88
4.7 Ein Array an ein anderes anfügen 90
4.8 Ein Array in einen String verwandeln 92
4.9 Ein Array mit Kommata ausgeben 94
4.10 Prüfen, ob sich ein Schlüssel in einem Array befindet 95
4.11 Prüfen, ob sich ein Element in einem Array befindet 96
4.12 Die Position eines Elements in einem Array feststellen 97
4.13 Elemente finden, die einer bestimmten Prüfung standhalten 98
4.14 Das Array-Element mit dem größten oder kleinsten Wert finden 100
4.15 Ein Array umkehren 101
4.16 Ein Array sortieren 101
4.17 Ein Array über ein berechnetes Feld sortieren 103
4.18 Mehrere Arrays sortieren 105
4.19 Ein Array mit Hilfe einer Methode statt einer Funktion sortieren 107
4.20 Ein Array in eine zufällige Reihenfolge bringen 108
4.21 Einen Kartenstapel mischen 109
4.22 Doppelte Elemente aus einem Array entfernen 110
4.23 Die Vereinigungs-, Schnitt- oder Differenzmenge zweier Arrays ermitteln 111
4.24 Alle Elementkombinationen eines Arrays finden 113
4.25 Alle Permutationen eines Arrays finden 115
4.26 Programm: Ein Array horizontal angeordnet in einer HTML-Tabelle ausgeben 118
5
Variablen 121
5.1 Die Verwechslung von == und = vermeiden 122
5.2 Einen Vorgabewert festlegen 123
5.3 Werte ohne Hilfe von temporären Variablen austauschen 124
5.4 Einen dynamischen Variablennamen erzeugen 125
5.5 Statische Variablen verwenden 126
5.6 Variablen in mehreren Prozessen gemeinsam verwenden 128
5.7 Komplexe Daten als String kapseln 130
5.8 Variableninhalte als Strings ausgeben 131
6
Funktionen 135
6.1 Auf Funktionsparameter zugreifen 136
6.2 Vorgabewerte für Funktionsparameter festlegen 137
6.3 Werte als Referenzen übergeben 139
6.4 Benannte Parameter verwenden 140
6.5 Funktionen mit einer variablen Anzahl von Argumenten verwenden 142
6.6 Werte per Referenz zurückgeben 144
6.7 Mehr als einen Wert zurückgeben 145
6.8 Bestimmte Rückgabewerte überspringen 147
6.9 Fehlermeldungen zurückgeben 148
6.10 Variable Funktionen aufrufen 150
6.11 Innerhalb einer Funktion auf eine globale Variable zugreifen 151
6.12 Dynamische Funktionen erzeugen 153
6.13 Objekt-Datentypen für Funktionsparameter vorschreiben 153
7
Klassen und Objekte 155
7.1 Objekte instanziieren 161
7.2 Objekte kopieren (klonen) 162
7.3 Ein Objekt durch eine Unterklasse erweitern 164
7.4 Auf eine überschriebene Methode zugreifen 166
7.5 Eigenschaften und Methoden verstecken 168
7.6 Objekt-Konstruktoren definieren 170
7.7 Ein Objekt zerstören 172
7.8 Eigenschaften mit _ _set() und _ _get() überladen 173
7.9 Schreib- oder lesegeschützte Eigenschaften implementieren 176
7.10 Methoden mit _ _call() überladen 178
7.11 Methoden und Eigenschaften einer Klasse ermitteln 180
7.12 Ein Objekt wie ein Array verwenden 182
7.13 Polymorphe Methoden verwenden 184
7.14 Objekt-Schnittstellen durch Interfaces standardisieren 186
7.15 Einem Basisobjekt zusätzliche Eigenschaften hinzufügen 189
7.16 Eine Klasse dynamisch erzeugen 190
7.17 Ein Objekt dynamisch instanziieren 191
8
Effizienter Umgang mit Daten 193
8.1 Über die Eigenschaften eines Objekt iterieren 195
8.2 Einfache Objekt-Iteration mit IteratorAggregate und ArrayObject 196
8.3 Einen eigenen Iterator implementieren 198
8.4 Einen eigenen Wrapper für Streams schreiben 202
8.5 Einen Stream filtern 206
8.6 Eigene Filter schreiben 207
9
Fehlerbehandlung mit Exceptions 210
9.1 PHP-Fehler- und Warnmeldungen in Ausnahmen umwandeln 212
9.2 Ausnahmen abfangen 213
9.3 Eigene Ausnahmen werfen 214
9.4 Klassenabhängiges Exception-Handling 216
10
Web-Grundlagen 218
10.1 Cookies setzen 219
10.2 Cookie-Werte lesen 221
10.3 Cookies löschen 222
10.4 Zu einer anderen Adresse umleiten 223
10.5 Sitzungen verfolgen 224
10.6 Sessions in einer Datenbank speichern 225
10.7 Verschiedene Browser erkennen 229
10.8 Einen GET-Query-String bilden 231
10.9 HTTP-Basic-Authentifizierung einsetzen #
10.10 Cookie-Authentifizierung verwenden 235
10.11 Ausgaben vorzeitig an den Browser senden 238
10.12 Ausgaben an den Browser zwischenspeichern 239
10.13 Web-Ausgaben mit gzip komprimieren 240
10.14 Fehlermeldungen vor Anwendern verbergen 241
10.15 Einstellungen zur Fehlerbehandlung vornehmen 242
10.16 Eine benutzerdefinierte Funktion zur Fehlerbehandlung verwenden 244
10.17 Fehler protokollieren 246
10.18 Den Fehler "headers already sent" vermeiden 247
10.19 Debug-Informationen protokollieren 248
10.20 Umgebungsvariablen lesen 251
10.21 Umgebungsvariablen setzen 252
10.22 Konfigurationsvariablen lesen 253
10.23 Konfigurationsvariablen setzen 254
10.24 Innerhalb von Apache kommunizieren 255
10.25 Code-Profile generieren 257
10.26 Geänderte Dateien herunterladen und unveränderte vom Browser cachen lassen 260
10.27 Programm: (De-)Aktivator für Website-Konten 263
10.28 Programm: Störungsprüfer 265
11
Formulare 272
11.1 Formulareingaben verarbeiten 274
11.2 Formulareingaben prüfen 276
11.3 Mit mehrseitigen Formularen arbeiten 278
11.4 Formulare mit erhaltenen Informationen und Fehlermeldungen erneut anzeigen 281
11.5 Mehrfaches Absenden desselben Formulars verhindern 284
11.6 Hochgeladene Dateien verarbeiten 286
11.7 Die Formularverarbeitung durch PHP absichern 288
11.8 Steuerzeichen in Benutzerdaten durch Escape-Sequenzen ersetzen 290
11.9 Mit Formularvariablen arbeiten, deren Name einen Punkt enthält 291
11.10 Formularelemente mit Mehrfachoptionen verwenden 292
11.11 Drop-down-Menüs auf Basis des aktuellen Datums erzeugen 294
12
Zugriff auf Datenbanken 296
12.1 Textdateien als Datenbanken verwenden 303
12.2 DBM-Datenbanken verwenden 304
12.3 Eine SQLite-Datenbank einrichten 308
12.4 Die Verbindung mit einer SQL-Datenbank herstellen 310
12.5 Eine SQL-Datenbank abfragen 312
12.6 Zeilen ohne Schleifen einlesen 314
12.7 Daten in einer SQL-Datenbank verändern 316
12.8 Abfragen effizient wiederholen 317
12.9 Feststellen, wie viele Zeilen eine Abfrage zurückgegeben hat 319
12.10 Behandlung von Anführungszeichen 320
12.11 Debug-Informationen und Fehler protokollieren 322
12.12 Eindeutige Kennzeichen automatisch zuweisen 325
12.13 Abfragen programmgesteuert erstellen 326
12.14 Paginierte Links für eine Reihe von Datensätzen generieren 331
12.15 Abfragen und Ergebnisse zwischenspeichern 335
12.16 Eine SSL-Verbindung zu einer MySQLi-Datenbank herstellen 337
12.17 Programm: Ein Diskussionsforum speichern 339
13
Web-Automatisierung 347
13.1 Eine URL mit der GET-Methode abrufen 349
13.2 Eine URL mit der POST-Methode abrufen 351
13.3 Eine URL mit Cookies abrufen 352
13.4 Eine URL mit Headern abrufen 354
13.5 Eine HTTPS-URL abrufen 356
13.6 Den Datenaustauch auf HTTP-Ebene debuggen 356
13.7 Eine Webseite mit Markup versehen 359
13.8 Links aus einer HTML-Datei extrahieren 361
13.9 ASCII in HTML konvertieren 362
13.10 HTML in ASCII konvertieren 363
13.11 HTML- und PHP-Tags entfernen 364
13.12 Smarty-Templates einsetzen 365
13.13 Die Protokolldatei eines Webservers analysieren 367
13.14 Programm: Veraltete Links finden 369
13.15 Programm: Aktualisierte Links herausfinden 372
14
XML 375
14.1 XML manuell generieren 377
14.2 XML mit DOM generieren 380
14.3 XML-Dokumente mit xmlWriter generieren 383
14.4 XML-Daten mit DOM parsen 386
14.5 XML mit SAX parsen 389
14.6 XML mit SimpleXML parsen 394
14.7 Daten zwischen DOM und SimpleXML austauschen 398
14.8 XML mit xmlReader parsen 401
14.9 XML mit XSLT transformieren 407
14.10 PHP-Funktionen in XSL-Stylesheets verwenden 409
14.11 Informationen aus einem XML-Dokument selektieren 413
14.12 XML-Dokumente für Menschen lesbar machen 418
14.13 XML-Dokumente aus PHP-Datenstrukturen erzeugen 422
14.14 XML-Dokumente in PHP-Arrays oder Objekte einlesen 425
15
Webservices 431
15.1 XML-RPC-Anfragen senden 432
15.2 XML-RPC-Anfragen empfangen 435
15.3 XML-RPC-Anfragen mit der XMLRPCi-Erweiterung senden 438
15.4 SOAP-Anfragen mit einem WSDL-Dokument senden 440
15.5 SOAP-Anfragen ohne ein WSDL-Dokument senden 444
15.6 SOAP-Anfragen empfangen 448
15.7 Anfragen an den Amazon-Webservice senden 452
15.8 Anfragen an den eBay-Webservice senden 457
15.9 RSS-Feeds lesen 461
15.10 REST-Anfragen senden 464
15.11 Daten mit WDDX austauschen 469
16
Reguläre Ausdrücke 472
16.1 Von ereg zu preg wechseln 475
16.2 Wörter suchen 477
16.3 Den n-ten Match finden 478
16.4 Zwischen gierigem und nicht-gierigem Matching wählen 479
16.5 E-Mail-Adressen validieren 481
16.6 Alle zu einem Muster passenden Zeilen in einer Datei finden 485
16.7 Text innerhalb von HTML-Tags finden 485
16.8 In regulären Ausdrücken Sonderzeichen verwenden 487
16.9 Datensätze lesen, bei denen ein Muster als Separator dient 489
17
Verschlüsselung und Sicherheit 491
17.1 Passwörter aus den Dateien Ihrer Site heraushalten 493
17.2 Daten durch Kodierung verschleiern 494
17.3 Daten durch Prüfsummen verifizieren 495
17.4 Passwörter speichern 496
17.5 Überprüfung der Passwortsicherheit 498
17.6 Was tun bei verlorenen Passwörtern? 500
17.7 Daten ver- und entschlüsseln 502
17.8 Verschlüsselte Daten in einer Datei oder Datenbank speichern 506
17.9 Verschlüsselte Daten gemeinsam mit einer anderen Website nutzen 509
17.10 SSL ermitteln 511
17.11 E-Mail mit GPG verschlüsseln 512
18
Grafik 515
18.1 Linien, Rechtecke und Vielecke zeichnen 519
18.2 Bogen, Ellipsen und Kreise zeichnen 520
18.3 Unterbrochene Linien zeichnen 522
18.4 Text zeichnen 524
18.5 Zentrierten Text zeichnen 526
18.6 Dynamische Bilder zusammensetzen 531
18.7 Eine transparente Farbe ermitteln und einstellen 534
18.8 Programm: Heraufgeladene Digitalfotos auf Webformat verkleinern 535
18.9 Grafiken geschützt ausgeben 538
18.10 Programm: Aus Umfrageergebnissen Balkendiagramme erstellen 540
19
Internationalisierung und Lokalisierung 544
19.1 Vorhandene Locales auflisten 546
19.2 Ein bestimmtes Locale verwenden 546
19.3 Das Default-Locale setzen 548
19.4 Textmeldungen lokalisieren 548
19.5 Datum und Uhrzeiten lokalisieren 552
19.6 Lokalisierung von Währungen 553
19.7 Bilder lokalisieren 555
19.8 Eingebundene Dateien lokalisieren 557
19.9 Lokalisierungsressourcen verwalten 558
19.10 gettext verwenden 560
19.11 Unicode-Zeichen lesen und ausgeben 561
20
Internetdienste 564
20.1 E-Mails senden 565
20.2 MIME-Mail senden 568
20.3 E-Mail mit IMAP oder POP3 lesen 571
20.4 Nachrichten an Usenet-Newsgruppen senden 574
20.5 Usenet-Nachrichten lesen 576
20.6 Dateien mit FTP herauf- und herunterladen 581
20.7 Adressen über LDAP abfragen 584
20.8 LDAP zur Benutzer-Authentifizierung verwenden 586
20.9 DNS-Lookups ausführen 588
20.10 Überprüfen, ob ein Host erreichbar ist 590
20.11 Informationen über einen Domainnamen herausfinden 592
21
Dateien 594
21.1 Eine lokale Datei erstellen oder öffnen 598
21.2 Eine temporäre Datei erstellen 599
21.3 Eine Datei auf einem entfernten Server öffnen 600
21.4 Eine Datei in einen String einlesen 602
21.5 Einen String in eine Datei schreiben 603
21.6 Die Zeilen, Absätze oder Datensätze in einer Datei zählen 604
21.7 Jedes Wort einer Datei verarbeiten 606
21.8 Eine bestimmte Zeile einer Datei einlesen 608
21.9 Eine Datei zeilen- oder absatzweise in rückwärtiger Reihenfolge bearbeiten 609
21.10 Eine Zeile per Zufall aus einer Datei auswählen 609
21.11 Alle Zeilen einer Datei in eine Zufallsreihenfolge bringen 610
21.12 Textfelder variabler Länge verarbeiten 611
21.13 Konfigurationsdateien einlesen 612
21.14 Von einer bestimmten Stelle einer Datei lesen oder an eine bestimmte Stelle einer Datei schreiben 615
21.15 Die letzte Zeile einer Datei entfernen 616
21.16 Eine Datei an ihrem Platz ohne eine temporäre Datei ändern 618
21.17 Gepufferte Ausgabedaten in eine Datei schreiben 620
21.18 An viele Datei-Handles gleichzeitig schreiben 621
21.19 Metazeichen der Shell mit Escape-Zeichen versehen 622
21.20 Einem Programm Eingabedaten durchgeben 624
21.21 Die Standardausgabe eines Programms lesen 624
21.22 Den Standardfehlerkanal eines Programms einlesen 626
21.23 Eine Datei sperren 627
21.24 Komprimierte Dateien lesen und schreiben 630
21.25 Programm: Unzip 632
22
Verzeichnisse 634
22.1 Zeitstempel auslesen und setzen 637
22.2 Auf Dateiinformationen zugreifen 638
22.3 Dateiberechtigungen oder Dateieigentümerschaft ändern 640
22.4 Einen Dateinamen in seine Bestandteile zerlegen 641
22.5 Eine Datei löschen 642
22.6 Eine Datei kopieren oder verschieben bzw. umbenennen 643
22.7 Alle Dateien in einem Verzeichnis bearbeiten 643
22.8 Eine Liste von Dateinamen finden, die einem bestimmten Muster entspricht 645
22.9 Dateien eines Verzeichnisses filtern 646
22.10 Neue Verzeichnisse erstellen 647
22.11 Ein Verzeichnis und seinen Inhalt löschen 649
22.12 Programm: Eine Auflistung des Webserver-Verzeichnisses erstellen 649
22.13 Programm: Site-Suche 654
23
PHP auf der Kommandozeile 659
23.1 Programmparameter parsen 661
23.2 Programmparameter mit Console_Getopt oder Console_Getargs parsen 662
23.3 Von der Tastatur lesen 669
23.4 Passwörter einlesen 670
23.5 Die Ausgabe eines Kommandozeilen-Befehls weiterverarbeiten 673
23.6 Dateien zeilenweise verarbeiten 675
23.7 Prozesse forken 678
23.8 Einen Server programmieren 681
24
PEAR 685
24.1 PEAR installieren 686
24.2 Den PEAR Package Manager verwenden 690
24.3 PEAR-Pakete installieren und deinstallieren 692
24.4 PEAR-Pakete upgraden 694
24.5 PECL-Pakete installieren 696
24.6 Pakete aus anderen Channels installieren 698
24.7 PEAR in Shared-Hosting-Umgebungen installieren 703
24.8 Eigene PEAR-Pakete erstellen 708
24.9 Eigene Pakete über einen Channel-Server vertreiben 714
Index 725
"Angefangen mit der Behandlung von Variablen, Strings und Zahlentypen über Datums- und Uhrzeitfunktionen bis hin zu komplexeren Datenbankabfragen, wird in diesem Buch nahezu in jeden Themenbereich, den die Internetprogrammierung mit PHP bietet, geführt. Das Buch präsentiert komplett fertige Skripte, die sich einfach abtippen lassen und so mit wenig Aufwand zum gewünschten Ergebnis führen, um die eigene Website möglichst schnell auszubauen sowie mit neuen Funktionen zu erweitern. [...] Als Nachschlagewerk oder zur Anregung für eigene Projekte [...] sehr gut." - printzip-Magazin, Ausgabe 1/2006
"In 3 neu eingefügten Kapiteln wird eine Einführung in die Webservices geboten, und es wird gezeigt, wie die hinzugekommenen Iteratoren, Streams, Wapper, Filter und Exceptions in der Praxis eingesetzt werden. Komplett neu geschrieben wurde das Kapitel zur XML-Unterstützung. Zahlreiche neue Rezepte und Informationen in mehreren Kapiteln runden diese Auflage ab. [...]" - ekz-Informationsdienst, 10/05
"Alles in allem ist dieses Buch in meinen Augen noch besser als eine Befehlsreferenz, da es zwar genauso gut sortiert und leicht zu durchschauen ist, es aber nicht nach den einzelnen Befehlen geordnet ist, sondern nach Problemen, die in der alltäglichen Verwendung von PHP immer wieder auftauchen. Daher kann ich das Buch jedem ans Herz legen, der sich mit professioneller Webentwicklung beschäftigt." - Vera Schott, Media-Mania.de, 09/2005
"Das Kochbuch für PHP 5 hat für fast jedes Problem eine schnelle Lösung parat." - Jens Franke, Buchtipp entwickler.com, 08/2005
"Dieses Buch wendet sich vor allem an alle, die tagtäglich mit PHP zu tun haben. [...] Auch zum schnellen Nachschlagen ist das Buch unbedingt zu empfehlen, da Google ja nicht immer in der Reichweite ist. Trotz der vielen einzelnen Rezepte bauen die Kapitel aufeinander auf und man findet garantiert alles was man sucht." - Michael Wagner, Soft7.de, 07/2005…mehr
"In 3 neu eingefügten Kapiteln wird eine Einführung in die Webservices geboten, und es wird gezeigt, wie die hinzugekommenen Iteratoren, Streams, Wapper, Filter und Exceptions in der Praxis eingesetzt werden. Komplett neu geschrieben wurde das Kapitel zur XML-Unterstützung. Zahlreiche neue Rezepte und Informationen in mehreren Kapiteln runden diese Auflage ab. [...]" - ekz-Informationsdienst, 10/05
"Alles in allem ist dieses Buch in meinen Augen noch besser als eine Befehlsreferenz, da es zwar genauso gut sortiert und leicht zu durchschauen ist, es aber nicht nach den einzelnen Befehlen geordnet ist, sondern nach Problemen, die in der alltäglichen Verwendung von PHP immer wieder auftauchen. Daher kann ich das Buch jedem ans Herz legen, der sich mit professioneller Webentwicklung beschäftigt." - Vera Schott, Media-Mania.de, 09/2005
"Das Kochbuch für PHP 5 hat für fast jedes Problem eine schnelle Lösung parat." - Jens Franke, Buchtipp entwickler.com, 08/2005
"Dieses Buch wendet sich vor allem an alle, die tagtäglich mit PHP zu tun haben. [...] Auch zum schnellen Nachschlagen ist das Buch unbedingt zu empfehlen, da Google ja nicht immer in der Reichweite ist. Trotz der vielen einzelnen Rezepte bauen die Kapitel aufeinander auf und man findet garantiert alles was man sucht." - Michael Wagner, Soft7.de, 07/2005…mehr