- PHP Bereich
- <?php  ?>
 <?  ?>
- Kommentare
- // Kommentar
 # Kommentar
 /* Kommentar  */
- Variablen prüfen
- if (isset($a))   // prüft ob eine Variable definiert wurde 
 if (empty($a))   //  true , falls $a=0 oder $a=false, $a="" oder $a nicht definiert ist
 
- Variablen untersuchen
- 
	    if (is_integer($a)) // Variablentyp prüfen: is_string, is_array, is_bool, is_double
 if (is_numeric ($a))  // prüft ob das Zahlen sind
- Abfrage Variablentyp
- gettype ($a);  //  Typ einer Variable  
- Variablentyp setzen
- settype ($a, string); // integer, double, string, boolean
 $neu = (integer) $a; // Cast
- Variable löschen
- unset ($a);
- Konstante define
- define ("A", "Wert");  // echo A;
         
- Zeiger
- $a = &$b; // $b ändert sich mit, wenn sich der Wert von $a verändert   
- Dynamische Variable
- $a = "b"; $$a = 3; // $b ist 3  
- Globale Variable und Umgebungsvariablen
- 
		$GLOBALS["a"] // Zugriff auf globale Variablen, also z.B. innerhalb einer Funktion
 $_SERVER['SERVER_NAME'] // aogo.de
 $_SERVER['HTTP_USER_AGENT'] // Name und Versionsnummer des Browsers
 $_SERVER['GEOIP_REGION_NAME'] // Berlin, sehr viele weitere
 $argv // Array enthält an das Script übergebende Argumenten
 php.net
- Magische Konstanten
- echo  __FILE__ // /www/htdocs/aogo/test.php
 echo  __DIR__ // /www/htdocs/aogo/
 echo  __LINE__ // 22
 echo  __METHOD__ // Auto::fahr Klasse und Methode
- Variablen ausgeben
- 		echo "Hallo {$a[44]} und nun";		
- Variableninformation
- var_dump ($a); // Ausgabe z.B. string(3) "abc" 
 print_r ($a);  // Arrays und Objekten
 
	  
      
			- Absoluter Wert
- abs (-4);  // 4  
- Zuweisungsoperator
- $a += 5; //  entspricht $a = $a + 5;
- Modulo Operator
- if (22 % 2 == 0);  //Prüft ob gerade
- Zahlen formatieren
- number_format (1550, 2, ",", "."); // 1.550,00;  Zahl, Nachkommastellen,
			Dezimalzeichen, Tausenderzeichen
 number_format (1550, 2); // 1,550.00;
- Runden
- 
			round (14.34); // 14
 ceil (9.3); // 10 aufrunden
 floor (9.8); // 9 abrunden
- Potenzieren
- 
			pow(3,4); // 3 hoch 4
 sqrt(4) // Wurzel aus 4 ist 2
- Maximalwert
 Minimalwert
- max (2,4,3,6); // 6 auch arrays sind so prüfbar 
 min (2,4,3,6); // 2
- Zufallsgenerator
- $zufall=mt_rand(1,100); // Ganzzahlige Zufallszahlen 
			
		  
			- Ausgabe
- 
			echo (nl2br(htmlspecialchars($zeile));  
- Laufzeit verändern
- 
			set_time_limit(600); // Zeit zum ausführen manipulieren 
- phpinfo
- 
			phpinfo(); // Eigenschaften der aktuellen Datei und der Server-Konfiguration
- flush
- 
			flush() // sendet Daten sofort an Browser  
- Umleitung
- 
			header("Location: test.html"); // Es darf noch keine Ausgabe an den Browser gesendet worden sein
- Mail versenden
- mail("an@gmx.de","Betreff","Emailtext", "From: Name <von@gmx.de> \n Bcc: kopie@email.de \n Content-Type: text/html");
- Zeitunterbrechung 
- 	 	
			sleep(10); // 10 Sekunden Unterbrechung 
- Verschlüsselung
- 	 
			md5("natoll und sowas"); // eb449714251ae9486c8e153fa421ee87
- Script unterbrechen
- 	 		  
			die ("Fehlerausgabe"); // Beenden mit Ausgabe 
 exit(); // Beenden ohne Ausgabe
- Fehler anzeigen
- 	 	
			error_reporting (E_ALL);
- Code ausführen
- 	 	
			eval ("echo \"Hallo $a\";");  // Hallo du
- Bildgröße
- $imgsize = getimagesize("img/bild.jpg"); // $imgsize[0] Breite [1] Höhe [2] Typ (1=GIF, 2=JPEG, 3=PNG)  [3] IMG-Tag  
- Beispiel GD Bibliothek
- 
			$bild = imagecreatetruecolor(300, 400); // erzeugt Bild - für Diagramme eignet sich gut GD Graph
 imagefilledrectangle($bild, 10, 10, 190, 40, $rot); // Rechteck zeichen
        
		  
            - Array erstellen
- $a = array ("Uwe", "Tim", "Bob"); 
 $a = array ("name" => "Bob", "alter" => 33); // Assoziatives Array
 $a = array ("namen" => array (6 => 5, 11 => 4, "b" => 2)); // Mehrdimensionales Array
- Arrayelemente hinzufügen
- $a[] = 3; // Neues Element 
 $a["beruf"] = "Held";
- Arrayelemente voranstellen
- array_unshift ($a, "Apfel", "Birne"); // am Anfang eines Arrays hinzugefügt
- Arrayelement suchen
- if (in_array ("Suchbegriff", $a))  
- Arrayschlüssel suchen
- if (array_key_exists ('Suchbegriff', $a)) 
- Arrayanzahl
- count ($a); // Zählt Anzahl der Array Elemente  
- Arrayelemente löschen
- array_shift ($a); // löscht erstes Element
 array_pop ($a); // löscht letztes Element
 unset ($a["name"]); // bestimmtes Element löschen
 unset ($a[1]); // bestimmtes Element löschen
- Arrays zusammenfügen
- $a = array_merge ($a1, $a2, $a3);   
- Teil eines Arrays
- $b = array_slice ($a, Anfangsposition, Anzahl Elemente);   
- Array umdrehen
- array_reverse ($a);   
- Doppelte löschen
- array_unique ($a); // doppelte Einträge löschen  
- Arrays sortieren
- $a = array ("Ampel", "Zebra", "Bär"); // brauch nicht in neuem Array gespeichert werden, wird auf $a dirket angewandt
 
 sort ($a); // aufsteigend sortiert (Ampel, Bär, Zebra)
 rsort ($a); // absteigend sortiert (Zebra, Bär, Ampel)
 shuffle ($a); // erzeugt eine zufällige Reihenfolge
 usort ($a,"funktion")  // mit Hilfe einer Funktion, kann eine benutzerdefinierte Sortierung geschaffen werden
 
- Assoziative Arrays sortieren
- $a = array ("b" => "Ampel", "a" => "Zebra", "c" => "Bär");
 
 asort ($a); // aufsteigend nach Value (b=Ampel, c=Bär, a=Zebra)
 arsort ($a); // absteigend nach Value (a=Zebra, c=Bär, b=Ampel)
 ksort ($a); // aufsteigend nach Key (a=Zebra, b=Ampel, c=Bär)
 krsort ($a); // absteigend nach Key (c=Bär, b=Ampel, a=Zebra)
- Arrayelement filtern
- $n = array_filter ($a, "funktion");  // eine funktion wird aufgerufen, gibt diese wahr zurück, bleibt das Element bestehen  
- Arrayelement suchen
- $key = array_search('Suchbegriff', $a);  // Dursucht ein Array  und liefert dazugehörigen Schlüssel 
- Funktion auf jedes Arrayelement anwenden
- function fktname ( &$wert, $key, $m) // durch &$ werden die Werte im Array geändert 
 { $wert = $wert*$m; } // jeder Wert im Array wird mal 5
 
 array_walk ( $a, "fktname", 5 ); // letzter Parameter ist optional
			genommen
- Array durchlaufen
- foreach ($a as $temp)    {    }  
- Assoziatives Array durchlaufen
- foreach ($a as $key => $value)  {   }             
- Array durchlaufen übersichtlich
- 
			echo "<table>";
			foreach ($_SERVER as $key => $value) { echo "<tr><td>$key</td> <td>$value</td></tr>"; } 
			echo "</table>";
- Serialisieren
- 
			$serial_str = serialize ($a); // Das Array wird in einen formatieren Sring umgewandelt, den            kann man z.B. in Cookie speichern
 $a= unserialize ($serial_str); // Serialized String wird zurück in ein Array umgewandelt
 
- Array in Zeichen-kette umwandeln
- 
			$zeichkette = implode (" - ", $a); // Array wird zu einem String (1 - 2 - 3)
- Zeichenkette in Array umwandeln
- $a = explode ("-", "1 - 2 – 3"); 
 
- Weitere Array Funktionen
- php.net
		
		  
            - Fallunterscheidungen
- if ($a == 1 and $b != 1 ) { } 
 elseif ($a >= 1 or $b <= 1) { }
 elseif ($a == 1 xor $b == 1) { }  // nicht beide wahr
 else { }
- Alternative Schreibweise
- 
			if ($a == 3) : echo 1; echo 2; 
 else :  echo 3;
 endif;
- Verkürte Schreibweise
- ($a == 1) ? echo "wahr" : echo "unwahr";
 $variable = ( 1==1 ) ? echo "wahr" : echo "unwahr";  // $varialbe=true;
- Werte vergleichen
- $a="froh";
 switch ($a)
 {
 case "froh":
 echo "gut";
 break; // muss geschrieben werden, sonst werden alle ausgeführt
 case "traurig":
 echo "schlecht";
 break;
 default: // für alles andere
 echo "weiß nicht";
 }
- While-Schleife
- while ($a <= 10)
 {
 $a++;
 }
- Do-while-Schleife
- do
 {
 $a++;
 }
 while ($a <=10); // Block wird mindestens einmal durchlaufen
- For-Schleife
- for ($a=1; $a<=3; $a++)   // 3 Durchläufe 
 {
 echo "$a<br>";
 }
- Schleifenabbruch
- break; // Beendet eine Schleife  
- Schleifen-
 unterbrechung
- continue; // Beendet aktuellen Durchlauf, aber nicht komplette Schleife  
          
            - Funktion
- function arbeit ($a) { $x=$a+5; return $x; } // Variablen gelten nur lokal; return beendet Funktion
 $y = arbeit (4);
 if (arbeit (10) < 15) { } // Funktion  innerhalb einer Abfrage
- Funktion mit Defaultwert
- function arbeit ($a, $b = 4) { }   
- Aufruf einer Funktion
- call_user_func ("arbeit", $a, $b);  // Weitere Möglichkeit eine Funktion aufzurufen  
- Globaler Variablen 
- 
			global $a, $b; // sonst gilt eine Variable nur innerhalb oder ausserhalb einer Funktion; Aufruf innerhalb einer Funktion
 $GLOBALS["a"]  // Zugriff auf eine Variable ausserhalb einer Funktion
- Variablen erinnern
- static $c = 0; // mit Hilfe des Schlüsselworts static merkt sich die Variable den letzten Wert; $c ist 0 beim ersten Aufruf	 
- Referenzparameter
- function arbeit (&$w)  { $w += 1; } // Der übergebende Parameter wird auch ausserhalb der Funktion verändert.
 $a = 2; arbeit ($a);  // $a=3
- Variablenfunktionen
- $f = "arbeit"; $f(2); // Funktion arbeit wird aufgerufen    
- Argumentzugriff
- 
			$numargs = func_num_args(); // Liefert Anzahl von Funktionsargumenten; Aufruf innerhalb einer Funktion
 echo "func_get_arg(1)"; // Zugriff auf Argumente
 $a = func_get_args(); // Array aller übergebenden Parameter
          
            - Formular erstellen
- <form action="<?php echo htmlspecialchars ($_SERVER["PHP_SELF"]); ?>" methode="POST">   // Post bei großen Datenmengen ; GET bei Suchanfragen   
- Übergebene Variablen
- $_GET["name"]; 
 $_POST["name"];
- Input
- <input type="text" name="wert"  value="$a"> //  Texteingabe
 
 <input type="checkbox" name="a[]" value="Bob"> // Checkboxes Array
 <input type="checkbox" name="a[]" value="Tim">
 
 <input type="ratio" name="a" value="Bob"> // Radiobutton Name muss immer der selbe sein
 <input type="ratio" name="a" value="Tim">
- Textfeld mit Zeilenumbruch
- nl2br($_GET["t"]; // \n wird in <br> umgewandelt
- Dateien hochgeladen
- $_FILES["feldname"]; // bei einem Bild prüfen, ob es auch eins ist (mime type mit getimagesize), außerdem sollte man  Dateiendung prüfen
 if (isset($_FILES["feldname"]) and ! $_FILES["error"]) {
 if (@move_uploaded_file($_FILES["feldname"]["tmp_name"], "upload/" . basename ($_FILES["feldname"]["name"]))) echo
            "Datei upload";
 } // Daten werden kopiert in Ordner uploadbasename verkürzt Pfad auf Dateinamen, das @ untterdrückt
            Fehlermeldungen
- Filtererweiterung
- if (filter_var($_GET["email"], FILTER_VALIDATE_EMAIL) === false) // damit lassen
            sich Variablen überprüfen, hier ob s eine gültige Emailadresse ist.
 if (filter_var($zahl, FILTER_VALIDATE_INT)) // prüft ob Eingabe Zahl ist
 if (filter_var($seite, FILTER_VALIDATE_URL)) // URL
 $optionen = array('options' => array('min_range' => 500, 'max_range' => 600));
 if (filter_var($zahl,
            FILTER_VALIDATE_INT, $optionen)) // Range
- Cross Site Scripting
 
- echo htmlspecialchars ($_GET("wert")); // wandelt Sonderzeichen um, sonst könnte
            z.B. Javascript ins Formularfeld eingetragen werden
 // außerdem könnte man mit in_array, srtlen oder anderen Funktionen, Eingaben einschränken oder
            strip_tags
- SQL Injection
- in ein Passwortfeld könnte man  ' or 1=1 schreiben, dadurch kommt man an Daten;
 z.b. duch $passwort = mysqli_real_escape_string ($verbindung, $_POST['passwort']); vorher
            codieren
 
- Allgemeine Sicherheitsinformationen
- keinen Inputs vertrauen
 möglichst POST statt GET verwenden
 Längen, Datentypen und Wertebereiche validieren
 Session-Cookies schützen mit ini_set('session.cookie_httponly', true)
 Keine kritischen Informationen in Sessions speichern
 Magic Quotes und register_globals abschalten
 
          
            - Cookie setzen
- setcookie ("name", "Werner", time()+(3600*24*7), "/"); // 7 Tage gültig, letzte
            Angabe ist Pfad, sonst evtl. nur in Unterordner gültig; weitere Parameter optional  
- Cookie auslesen
- 
            if (isset ($_COOKIE["name"])) echo htmlspecialchars($_COOKIE["name"]);  
- Cookie löschen
- setcookie ("name");  
- Session starten
- session_start (); // startet oder führt Session weiter aus; muss vor der ersten
            Textausgabe stehen; um Sessions zu nutzen, muss Cookies aktiviert sein
- ID aktueller Session
- session_id (); // 13a99f8c9c64a0c  
- Session Variablen
- 
			$_SESSION["name"] = "Marie"; // in Session speichern
 if (isset ($_SESSION["name"]))  echo $_SESSION["name"];  // Session Variable auslesen
- Sessionvariablen löschen
- session_unset ("name"); // löscht ein Sessionvariable
 session_unset (); // löscht alle Sessionvariablen
- Session löschen
- $_SESSION = array(); // leeres Array; Session löschen z.B. beim Logout
 setcookie (session_name(), "", time()-3600); // außerdem wird das Session Cookie gelöschht
 session_destroy(); // außerdem Sitzung zerstörrt, um auf ganz sicher zu gehen
- Kodieren einer Session
- session_encode (); // Kodiert Session als Zeichenkette; a|s:9:"Wert";b|s:11:"Wert"; 
 session_decode (); // Dekodiert Session
- Session Id ernuet erzeugen
- session_regenerate_id(); // behält Werte von Session und erzeute Session Schlüssel neu, dient zur Sicherheit
 
          
		  
		  
			- Uhrzeit in Sekunden
- time (); // Anzahl Sekunden, seit dem 1.1.1970  
- Zeitmarke mit getdate umwandeln
- $datum_array = getdate ();
 $datum_array[seconds]; // minutes, hours, mday (Tag des Monats), wday, mon, year, yday
- Zeitmarke mit date umwandeln
- date ("d.m.y H:i:s", time()); // 02.03.01 04:22:59
 date ("j.n.Y G:i:s", time()); // 2.3.2001 4:22:59
- Zeitmarke erzeugen
- $mk = mktime (Stunden, Minuten, Sekunde, Monat, Tag, Jahr);   
- Zeitzone festlegen
- date_default_timezone_set("Europe/Berlin");
- Datum prüfen
- checkdate ($monat, $tag, $jahr); // prüft, ob es das Datum geben kann; 30 Februar gibt es nicht
 
- Microsekunden
- $t_a["start"]=microtime(); // Laufzeit eines Sripts testen
 $t_a["end"]=microtime(); $t_a["time"] = $t_a["end"] - $t_a["start"]; echo "Zeit:".$t_a["time"]."<br>";
        
			- Dateien prüfen
- 
			if (file_exists ("test.txt")) //  Existenz
 if (is_file ("text.txt")) // Datei
 if (is_dir ("/ordner")) //  Ordner
 if (is_readable ("test.txt")) // Lesbarkeit
 if (is_writeable ("test.txt")) // Schreibbarkeit
- Information über eine Datei
- filesize ("test.dat"); // Länge in Bytes (Zeichen gleich Byte)
 filectime ("test.dat") // Datei erstellt, z.B. 12.09.1999
 fileatime ("test.dat") // letzter Zugriff auf die Datei
 filemtime ("test.dat") // Datei zuletzt geändert
- Informationen über Datei
- $info = stat(a.txt); // viele weitere Informationen
 $info[7]; // Größe in Bytes
 $info[8]; // timestamp letzter Zugriff
 $info[10]; // Zeitpunkt der letzten Änderung
- Array aus Datei erzeugen
- $zeilen = file (datei.txt); // Zeilen werdn in Arrayelementen gespeichert
 foreach ($zeilen as $zeile) { echo $zeile; }
- String aus einer Datei
- $d = file_get_contents ('datei.txt'); // gesammte Datei, wird in einer Variable gespeichert
- In Datei schreiben
- file_put_contents ('datei2.txt', 'Ho ho ho'); // Öffnet und schreib gekapselt in
			einer Funktion
 
- Datei öffnen
- $fp = fopen ("http://www.hsv.de", "r"); // r (lesen), w (schreiben), a (anhängen), r+ (lesen und schreiben)
 if (! $fp) exit ("Datei konnte nicht geöffnet werden");
- Datei schließen
- fclose ($fp); // zu jedem fopen ein fclose, sonst könnte die Datei evtl. nicht noch einmal geöffnet werden  
- Zeilenweise lesen aus einer Datei
- while (!feof ($fp)) // Liest zum Zeilenvorschub und springt weiter, solange das Ende der Datei nicht erreicht ist.
 { $zeile = fgets ($fp); }
- Zeilenweise lesen ohne Html
- $zeile = fgetss ($fp); // entfernt HTML, PHP
- Zeichenweise lesen
- $zeichen = fread ($fp, 16); // Liest beliebig viele Zeichen  
- Positinorierung
- fseek ($fp, 64);   
- Positinorierung lesen
-        ftell ($fp); // aktuelle Postition innerhalb der Datei  
- In Datei schreiben
- fwrite ($fp, "Text"); // Text wird je nach Modus drangehängt oder ersetzt
 fputs ($fp, "Text"); // Schreibt Daten an die Position des Dateizeigers
- Dateien sperren und entsperren
- flock ($fp,1); // 1 Leseschutz, 2 Schreibschutz, 3 Sperre aufheben, 4 keine Sperre,
			Wichtig damit nicht 2 User gleichzeitig in eine Datei schreiben.  
- Datei erstellen
- touch ("test.dat"); // erstellen
 unlink ("test.dat"); // löschen
 copy("../test.dat","kopie_test.dat"); // kopieren
- Ordner erstellen
- mkdir ("testdir", 0777); // Ordner erstellen
 rmdir ("testdir"); // Ordner löschen
- Zugriffsrechte ändern
- chmod ("/ordner/index.htm",0777);  
- Verzeichnishandle
- 
			if ($dh = opendir("/test")) {
 while (($file = readdir($dh)) !== false) { echo "Name: $file<br>"; }
 } closedir($dh); // kann mit z.B. stat untersucht werden
- Datei einbinden
- include ("test.php"); // Datei wird ausgegeben oder verarbeitet
 require ("test.php"); // bei nicht vorhanden sein, wird das script angehalten
        
		
			- Verkettung
- $a = "Hallo" . " Welt"; // Hallo Welt  
- Zuweisungsoperator
- 
			$a .= "gut"; // entspricht $a = $a ."gut";  
- Stringindizierung
- $a = "Text"; // $a[1] ist e 
- HTML Sonderzeichen umwandeln
- htmlspecialchars("3 > 4 & \" "); // Soderzeichen werden im HTML Sonderzeichen umgewandelt, " wird in " umgewandelt 
 htmlspecialchars_decode (" "); // Sonderzeichen werden in normale Zeichen umgewandelt
- Entfernt HTML Tags
- strip_tags("<i>Text</i>"); // HTML werden entfernt
 strip_tags("<i>Text</i>", "<p><i>"); // behalten werden <p> und <i>
- Zeilenumbrüche
- nl2br ("Text \n"); // Zu Zeilenumbrüchen wird <br> hinzugefügt  
- Prüft ob Teilstring in Zeichenkette
- strstr ("Text", "ex"); // true
 stristr ("Text", "EX"); // true Großkleinschreibung unbeachtet
- Länge Zeichenkette
- strlen ("Text"); // 4  
- Teilzeichenkette extrahieren
- substr ("Rucksack", 4, 3); // sac
 substr ("Rucksack", -3); // ack
- Zeichenkette ersetezen
- str_replace ("suchen", "ersetzen", "hier suchen"); // wird für alle gefunden durchgeführt
 str_replace (array ("ä","Ä"), array ("ae","Ae"), "Ä ä"); // Ae ae
- Teilzeichenkette ersetzen
- substr_replace ("Rucksack", "Schlaf", 0, 4); // Schlafsack  
- Position im String
- strpos ("Text", "x"); // 3 sucht erstes
 strrpos ("Texte", "e"); // 5 sucht letztes
- Suchen und zählen
- substr_count ("Hello world. The world is world", "world"); // 3 Vorkomnisse
- Zeichenkette säubern
- trim (" Text 1 "); // beseitigt Leerzeichen und Tabulatoren
 trim ("' Text 1 ", "'."); // Mit 2 Argument; einfache Anführungzeichen und Punkte werden am Anfang und am Ende entfernt
 chop ("Text 1 "); // nur am Ende
 ltrim (" Text 1"); // nur am Anfang
- URL in Array zerlegen
- $a = parse_url ("http://www.test.de/22/datei.htm?a=3");
 // $a[scheme]  Protokoll -- $a[host] www.test.de -- $a[path] 22/datei.htm -- $a[query] a=3 -- $a[user] Benutzer -- $a[pass] Passwort
- Text formatieren
-  sprintf ("Text %04d", 36); // Text 0036 - Integer -- prinf () gibt den Inhalt direkt aus
 sprintf ("%.2f", 5.3333) // 5.33 runden -  Flieskommazahl
 sprintf ("Text %s", A); // Text A - String
- Groß Kleinschreibung umwandeln
- strtoupper ("alles gross"); // ALLES GROSS
 strtolower ("ALLES KlEIN"); // alles klein
 ucwords ("capitalized words"); // Capitalized Words
- Passwörter in md5 hash speichern
- $passwort = md5 (Haus); // ebacf61946ee81f386960ad2a09a147e
- Kodieren
- base64_encode ($a); // kodieren: VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==
 base64_decode ($a); // dekodieren
- Sonderzeichen kodieren 
- awurldecode (Hans%20ist%20gr%F6%DFer); // Hansi ist größer
 rawurlencode (Hansi ist größer); // Hans%20ist%20gr%F6%DFer
- Parse String
- 
			 parse_str ("name=Otto&age=33"); // $name=Otto; $age=33
 parse_str ("name=Otto&age=33",$a); //$a[name]=Otto
- Übereinstimmung
- 
			$a = similar_text ("abcd", "cbax", $p); // hier $a=1 und $p=25; gibt Anzahl an Übereinstimmung und Prozentangabe wieder
        
        
			- Reguläre Ausdrücke
- preg_match ("/a.c/", "abcde", $erg); // findet nur ersten Treffer, gespeichert in $erg[0]; Funktion gibt true zurück; / heisst Begrenzer
 
 "/^abc/" am Anfang des Strings
 "/cde$/" am Ende des Strings
 "/a.c/" beliebiges Zeichen
 "/[^xy]/" beliebiges Zeichen, ausser x und y
 "/[ax]bc/" a oder x
 "/(abc|dfg)/" abc oder dfg
 "/[a-z]bc/" Zeichenbereiche, weiter z.B. [0-9] oder [A-Za-z] für Groß- und Kleinbuchstaben
 
 "/[a-z]*cd/" beliebig oft; Quantifizierer
 "/[a-z]+cd/" mindest einmal
 "/[a-z]?cd/" einmal oder keinmal
 "/[a-z]{1,4}cd/"  mindestens einmal, höchstens 4 mal
 
 "/\"xyz/" findet "xyz \ Maskierung
 "/\wabc/" Wortgrenze; weitere z.B. \s Whitespace, \d Ziffer, \w Wortzeichen
 
 "/Abc/i" Groß und Kleinschreibung ignorieren; Modifizierer
 "/[a-z]*cd/U" es wird nur minimale Zeichen eingesammelt, hier bcd ohne U, wäre es abcd
- Mehrere finden
- 
			preg_match_all ("/a.c/", "abcde axc", $erg); // findet alle Treffer, gespeichert in $erg[0][0] = abc; erg[0][1]= axc
 
- Suchen und ersetzen
- 
			$x = preg_replace ("/abc/", "xyz", "abcd"); // xyzd; jedes Vorkommins wird ersetzt; funktioniert auch mit arrays
- Array erzeugen mit regulären Ausdruck
- 
			$a = preg_split("/ /", "abc def");Array mit [0] abc und [1] def 
          
            - Klasse und Instanz
- class Auto { //  Auto ist der Bauplan; beginnt üblicherweise mit großem Anfangsbuchstaben
 public $farbe = "weiss"; // Eigenschaften eines Objekts
 public $ps; }
 
 $vw = new Auto; // Objekt wird erzeugt; Objekte sind konkreten Realisierungen einer Klassen;
 $vw->farbe = "blau"; // Objekt Eigenschaft wird verändert
- Mehtoden
- 
			class Auto {
 public $kmh=0;
 public function fahr ($x) {
 $this->kmh  += $x; } }  // $this ermöglicht Zugriff auf aktuelless Objekt
 
 $vw = new Auto;
 $vw->fahr(20); // Der Wert kmh wird, um 20 erhöht
- Zugriffsmodifizierer
- public $farbe; // lässt sich durch $vw->farbe="blau" setzen oder drauf zugreifen
 private $farbe; // lässt sich nicht ausserhalb des Objektes ändern oder zugreifen
 protected $farbe; // lässt sich nicht ausserhalb des Objektes ändern oder zugreifen, aber
            in Vererbungsobjekten
- Konstruktor und Destruktor
- class Auto {
 public function __construct($n) { // Diese Methode wird aufgerufen wenn ein Objekt erzeugt wird
 echo $n;
 $this->name = $n; } // name wird Eigenschaft des Objekts
 
 public function __destruct() {  // wird aufgerufen wenn ein Objekt zerstörrt wird
 echo "weg"; } }
 
 $vw = new Auto("Polo");
 unset ($vw);
- Objekt Ausgabe
- class Auto {
 function __toString() { // wird zurück gegeben, wenn objekt per echo aufgerufen wird
 return echo "dies und das"; } }
 
 $vw = new Auto();
 echo $vw;  // gibt "dies und das" aus
- Objekt Kopie
- 
			$audi = clone $vw; // Eine Kopie des Objekts Audi wird erstellt, durch Einsatz der Methode __clone() kann das neue Objekt verändert sein
- Objekte als Parameter und Rückgabewerte
- 		
			class Auto {
 private $farbe="rot";
 function aus() { return $this->farbe; }
 
 function col ($a) {
 $erg = new Auto;
 $erg->farbe = $a->farbe; Die Farbe des neuen Objekts ist die Farbe des übergebenden Objekts
 return $erg; } }
 
 $vw = new Auto;
 $audi = new Auto;
 echo $vw->col($audi)->aus(); // Objetkt wir an Methode von $vw übergeben, anderes Objekt entgegenommen und ausgegeben
- Vererbung
- 
			class Auto { // Elternklasse 
 public $kmh=0;
 public function fahr ($x) {
 $this->kmh += $x; } }
 
 class Rennauto extends< Auto {  // Rennauto Klasse erbt Eigenschaften und Methoden von Auto
 function bonus($y) {
 $y+=10;
 parent::fahr($y); // Elternmethode direkt zugreifen
 $this->kmh+=10; } } // Elterneingenschaft zugreifen
 
 $porsche = new Rennauto;
 $porsche-> fahr(5);
 $porsche-> bonus(5); // Der Porsche wird auf 30 Beschleunigt
- Vererbung: final
- final public function fahr() { }  // durch final kann es in der Vererbung nicht überschrieben weren
 final class Auto // final vor einer Klasse, macht diese nicht mehr ableitbar
- Vererbung: abstract
- 
			abstract class Auto {  // Abstrakt muss vor Klasse stehen und vor den betreffenden Methoden. 
 abstract public function fahr()  }  // Diese Methoden müssen in Unterklassen ersetzt werden und können nicht direkt aufgerufen werden
- Vorhandensein von Methoden erzwingen
- interface Zwang { public function fahr (); }   // die hier aufgeführten Methoden müssen in der folgenden Klasse vorhanden sein
 
 class Auto implements Zwang {
 public function auto () {}  }  // wär die Methode nicht vorhanden, erschien eine Fehlermeldung
- Direktzugriff auf Methoden
- 	
			class Auto {
 public static $farbe = 2; // durch static, braucht ein Objekt nicht erstellt werden, man hat Direktzugriff
 const k = 3; // Konstante ohne $
 public static function fkt_a() { echo "1"; }
 
 public static function fkt_b() {
 echo self::$farbe; // Zugriff innerhalb einer Klasse
 echo self::fkt_a(); // Bei statischen Methoden muss self anstatt this verwendet werden.
 echo self::k; } }
 
 echo Auto::fkt_b(); // 123
 echo Auto::$farbe;  // 2
- Eigenschaften merken
- class Auto {   // mi Hilfe von static und self werden Instanzen gezählt 
 private static $zaehler = 0;
 public function __construct() {
 self::$zaehler++; // Mit Hilfe von self werden die erstellten Objekte gezählt
 echo "Nummer " . self::$zaehler; } } jedes erstelltes Objekt hat neue Nummer
 
- Instanz prüfen
- 
			if ($vw instanceof Auto) echo "Das Objekt vw ist Instance der Klasse Auto";
			
- Hilfsfunktionen
- 
			echo (class_exists(Auto)); // 1
 echo (get_class($vw)); // Auto
 echo (get_parent_class(Auto)); // übergeordnete Klasse, hier keine
 echo method_exists($vw, fahr); // 1
 print_r (get_class_methods(Auto)); // funktioniert mit Auto und mit $vw -- Array mit [0]=>fahr
 print_r (get_class_vars(Auto)); //  Array ( [farbe] => weiss [ps] => [kmh] => )
 print_r (get_object_vars($vw)); // Array ( [farbe] => blau [ps] => [kmh] => 20 )
 print_r  (get_declared_classes()); // Array mit vielen exestierenden Klassen und eigenen
- Serialisierung
- 
			$s = serialize($vw); // O:4:"Auto":2:{s:5:"farbe";s:4:"blau";s:2:"ps";N;} Objekt kann so abgespeichert werden
 $vw = unserialize ($s) // Die zugehörige Klasse muss aufgeführt sein
- Fehlermeldungen
- 
			 try { if (2>1) throw new Exception ('Ausnahme'); } // Bei Fehlern oder, wenn bewußt Ausnahme geworfen wird, wird catch aufgerufen
 catch (Exception $e) {  echo $e->getMessage(); exit; } // Bei Fehler im Bereich try, wird catch aufgerufen und das Objekt ausgegeben
 
	
    
	Impressum: Gero Zickermann, Haasestr. 3, 10245 Berlin