String

mit Stringmanipulationen werden Zeichenfolgen ausgewertet und verändert.

Funktion Bedeutung
htmlspecialchars Maskiert HTML Zeichen
explode Zerlegt eine Zeichenfolge in einzelne Teile, wobei sich die Aufteilung an bestimmten Zeichen orientiert, z.B. dem Leerzeichen. Die einzelnen Strings werden in einem Array abgelegt
implode Setzt die Werte eines Arrays, separiert durch ein Trennzeichen, zu einem String zusammen.
trim Entfernt führende und folgende Leerzeichen.
ltrim Entfernt führende Leerzeichen
chop Entfernt folgende Leerzeichen am rechten Ende
sprintf Formatiert Werte
printf Schreibt formatierte Werte
strcasecmp Vergleicht zwei Strings ohne Berücksichtigung von Groß- und Kleinschreibung.
strchr Suche in einem String nach einem Zeichen.
strcmp Vergleicht zwei Strings.
mb_strlen Ermittelt die Länge eines Strings / Multibyte Funktion
mb_strpos Ermittelt die Position eines Strings in einem anderen String.
strstr Sucht in einem anderen String nach einem String
strtolower Verwandelt die Buchstaben eines Strings in Kleinbuchstaben
strtoupper Verwandelt die Buchstaben eines Strings in Großbuchstaben
substr Liefert einen Teilstring aus einem String
strtok Zerlegt einen String in einzelne Teile, wobei ein Trennzeichen, etwa das Leerzeichen, bestimmt, wo getrennt werden soll. Die Funktion liefert bei jedem erneuten Aufruf den jeweils nächsten Teilstring.
ereg_replace Sucht nach einem Teilstring innerhalb eines Strings und ersetzt diesen durch einen anderen String.
eval Wertet einen als String übergebenen Ausdruck aus.

preg_match()
preg_replace()

Auch in PHP kann man reguläre Ausdrücke nutzen
wordwrap Führt nach einer bestimmenden Zeichenzahl einen Zeilenumbruch durch.

Multibyte Funktionen

Multibyte Funktionen umfassen auch die deutschen Umlaute und das ß.

$info = "Hallöchen Welt, wie geht es dir?";

mb_strlen($info)

Die Anzahl der Zeichen

32

mb_strtolower($info)

Alles in Kleinbuchstaben.

hallöchen welt, wie geht es dir?

mb_strtoupper($info)

Alles in Großbuchstaben

HALLÖCHEN WELT, WIE GEHT ES DIR?

$ar = mb_str_split($info)

Die Zeichen werden in einem Array hinterlegt.
Siehe auch explode() und implode()

mb_ord("S")

Gibt die Codenummer des Zeichens aus.

83

mb_chr(98)

Gibt das Zeichens einer Codenummer aus.

b

mb_strpos($info, "h")

Position vom Anfang der Zeichenkette aus gesehen.

6

mb_stripos($info, "h")

Position vom Anfang, Groß und Kleinschreibung wird nicht unterschieden

0

mb_strrpos($info, "h")

Vom Ende aus gesehen.

22

mb_strripos($info, "H")

Vom Ende aus Groß- und Kleinschreibung wird nicht unterschieden.

22

$i = -1;
while ($i = mb_stripos($gedanke, "denkst", $i + 1))
echo $i . " / ". mb_substr($gedanke, $i, 10) . "<br>";

Die Methode mb_stripos() und auch die anderen hier aufgeführten Methoden können als dritten Parameter einen Positionswert haben, ab dem der String durchsucht wird. In dieser while Schleife kann man so alle Vorkommen von "denkst" ermitteln. Wenn der gesuchte Wert nicht vorhanden ist liefert mb_stripos den Wert false und somit wird die while Schleife beendet.

Mit der Methode mb_substr() kann man sich einen Teilstring ausgeben lassen.
$gedanke = "Wenn du denkst du denkst, dann denkst du nur du denkst";

Wenn du denkst du denkst, dann denkst du nur du denkst.
8 / denkst du
18 / denkst, da
31 / denkst du
48 / denkst.

Suchen & Ersetzen

Einen String kann man nach einem Teilstring durchsuchen mit mb_ereg_init() lässt sich nach bestimmten Zeichenfolgen suchen, auch reguläre Ausdrücke sind möglich.

mb_ereg_search_init($info, "XXX"); Suche nach Zeichenfolge
mb_ereg_search() liefert true, bei erfolgreicher Suche
echo mb_ereg_replace("XXX", "Willi", $info); Ersetzt alle vorkommenden Zeichen
echo mb_eregi_replace("XXX", "Willi", $info); Ersetzt alle vorkommenden Zeichen ignoriert Groß- und Kleinschreibung

Achtung Wenn man nach Zeichen sucht, welche in regulären Ausdrücken eine Bedeutung haben, wie beispielsweise der Punkt, muss man das Zeichen mit einem vorangestelltem Backslash maskieren.

Folgendes Beispiel

XXX mag dich sehr, du solltest mit XXX mehr Zeit verbringen

Gefunden: XXX
mb_ereg_search_init($info, "XXX");
if (mb_ereg_search()) echo "Gefunden: XXX
";
Treffer 1
Treffer 2
$i = 0;
mb_ereg_search_init($info, "XXX");
while (mb_ereg_search())
echo "Treffer " . ++$i . "<br>";
Willi mag dich sehr, du solltest mit Willi mehr Zeit verbringen echo mb_ereg_replace("XXX", "Willi", $info);


Stringvergleich

ein Stringverleich vergleicht eine gesamte Zeichenfolge oder Teile daraus.

gesamte Zeichenfolge vergleichen

Für die gesamte Zeichenfolge nimmt man das doppelte Gleichheitszeichen. Dadurch wird true (bzw. 1) zurückgegeben.

1 <?php
echo "Blödmann"=="Blödmann";
?>
das stimmt nicht <?php
if("Blödmann"=="blödmann"){
echo "das stimmt";
}
else{
echo "das stimmt nicht";
}
?>

htmlspecialchars()

siehe PHP Manual

htmlspecialchars() wandelt Sonderzeichen in HTML-Entities um. Zeichen, die zum Zeichenvorrat von HTML gehören wie > < aber auch andere Zeichen wie & und " können maskiert werden. Siehe dazu meinen Tipp Zeichen maskieren.

Das ist wichtig, damit Manipulationen des HTML Codes genannt XSS vermieden wird. Ohne die Maskierung von HTML Zeichen könnte HTML Code oder Javascript Code eingeschleust werden. Schon ein nicht geschlossenes style- Tag würde den Rest der Seite nicht mehr anzeigen.

Diese Maskierung lässt sich in PHP mit der Funktion htmlspecialchars() erzeugen.
Der erste Parameter erwartet den String.

$htmltext = "2 < 4 && \" 6 \" == '5' öäß ! ";
echo htmlspecialchars($htmltext);
echo "<br>\n";
echo htmlspecialchars($htmltext, ENT_QUOTES);
echo "<br>\n";
echo htmlspecialchars($htmltext, ENT_NOQUOTES);
echo "<hr>\n";
$mit = htmlspecialchars($htmltext);
$ohne = htmlspecialchars_decode($mit);
echo $ohne;
echo "<hr>\n";
echo = htmlentities($htmltext);

siehe Beipsiel im Quelltext.

In dem zweiten Parameter kann man angeben, wie mit Anführungszeichen verfahren wird. Standardmäßig werden doppelte Anführungszeichen maskiert, aber einfache nicht.

Mit ENT_QUOTES werden auch einfache Anführungszeichen maskiert.

htmlspecialchars($myHtml, ENT_QUOTES) ;

mit ENT_NOQUOTES werden keine Anführungszeichen maskiert.

htmlspecialchars($htmltext, ENT_NOQUOTES);

htmlspecialchars_decode()

Man kann den String mit Maskierungen auch wieder umwandeln mit:

$ohne = htmlspecialchars_decode($mit);

htmlentities()

siehe PHP Manual

Der Unterschied von htmlentities() ist, dass im Gegensatz zu htmlspecialchars() auch die Sonderzeichen wie öäüß umgewandelt werden.

strcasecmp()

Um Groß und Kleinschreibung nicht zu beachten, verwendet man strcasecmp. Hier wird bei Übereinstimmung der Wert 0 zurückgegeben.

0
0
0
<?php
echo strcasecmp("grüne Vase", "Grüne Vase"),"<br>";
echo strcasecmp("Grüne Vase", "grüne vase"),"<br>";
echo strcasecmp("Grüne Vase", "Grüne Vase");
?>
das stimmt <?php
$Teststring = strcasecmp("grüne Vase", "Grüne Vase");
if($Teststring==0){
echo "das stimmt";
}
else{
echo "das stimmt nicht";
}
?>

Teilzeichenfolge ermitteln
mb_strpos()

Will man nur einen Teil des Strings vergleichen, kann man mb_strpos einsetzen. Die Funktion liefert die Position eines Strings in einem anderen String. Beachte die erste Position oder der erste Buchstabe ist 0. Außerdem werden Leerzeichen natürlich auch mitgezählt.
Man kann in einer if Abfrage testen, ob das Wort in einem Text vorhanden ist. Jedoch sollte man wie unten im Beispiel >-1 anstatt >=0 schreiben, da 0 gleichzeitig für den Wert false steht, was zu Problemen führen kann.
Das erste Argument ist die lange Zeichenkette, in der gesucht wird, das zweite Argument ist die Zeichenkette, nach der gesucht werden soll. Als drittes Argument kann man optional einen Zahlenwert angeben, welcher die Position bestimmt, ab der gesucht wird. Das heißt bei 0 wird vom ersten Buchstaben an gesucht.

21 <?
$Lied = "Ein Danklied sei dem Herrn für alle seine Gnade";
$Wort= "Herrn";
echo mb_strpos($Lied,$Wort);
?>
das Wort ist vorhanden <?php
$Wort= "Emanuel";
$Lied = "Ach komm ach komm Emanuel";
if(mb_strpos($Lied, $Wort)> -1){
echo "das Wort ist vorhanden";
}
else{
echo "das Wort ist nicht vorhanden";
}
?>
5
5
25
7
<?PHP
$text ="Mein Hirt ist Gott der Herr";
echo mb_strpos($text,"Hirt"), "<br>";
echo mb_strpos($text,"H"), "<br>";
echo mb_strpos($text,"r",23), "<br>";
echo mb_strpos($text,"r",0);
?>

mb_strpos(), mb_stripos(), mb_strrpos(), mb_strripos()

Mit folgenden Funktionen lässt sich die Position eines Zeichens ermitteln.

$info = "Hallöchen Welt, wie geht es dir?";

mb_strpos($info, "h")

Position vom Anfang der Zeichenkette aus gesehen. Das erste Zeichen ist Position 0.

6

mb_stripos($info, "h")

Position vom Anfang, Groß und Kleinschreibung wird nicht unterschieden. Es beginnt bei 0.

0

mb_strrpos($info, "h")

Vom Ende aus gesehen.

22

mb_strripos($info, "H")

Vom Ende aus Groß- und Kleinschreibung wird nicht unterschieden.

22

$i = -1;
while ($i = mb_stripos($gedanke, "denkst", $i + 1))
echo $i . "<br>";

Die Methode mb_stripos() und auch die anderen hier aufgeführten Methoden können als dritten Parameter eine Positionswert haben, ab dem der String durchsucht wird. In dieser while Schleife kann man so alle Vorkommen von "denkst" ermitteln, die in dem Satz vorkommen: "Wenn du denkst du denkst, dann denkst du nur du denkst".

mb_substr($gedanke, 4, 10)

Eine Teilzeichenkette von $gedanke, ab dem 4ten Zeichen die nächsten 10 Zeichen. Würde das letzte Argument 10 fehlen, würde die Zeichenkette bis zum Ende ausgegeben.


Ausgabe eines Teilstrings
substr() / mb_substr()

mittels substr() lassen sich Teile einer Zeichenkette ausgeben. Es werden 3 Argumente erwartet,
1. die Zeichenkette,
2. die Startposition beginnend bei 0, für den ersten Buchstaben, 1 beim zweiten etc.
3. optional, die Anzahl der auszugebenden Zeichen, ohne Argument wird bis zum Ende ausgegeben.

Gott <?php
$text="Mein Hirt ist Gott der Herr, er wird mich immer weiden. Er waltet nah und fern.";
echo substr($text,14,5);
?>
Im folgenden Beispiel wird nach der Dateiendung in einer Pfadangabe gesucht. Dabei wird zuerst die Position des Punktes ermittelt. Anschließend die Gesamtlänge der Zeichenfolge mittels strlen(). Zum Schluß wird damit die gewünschte Formel gebildet.
.php <?php
$Pfad="D:\documente\vertraulich\amigo.php";
$Pos = strpos($Pfad, ".");
$Len = strlen($Pfad);
echo substr($Pfad, $Pos, $Len-$Pos);
?>

chop()

Mit chop() kann man Zeichen vom rechten Ende eines Strings entfernen.

Hallo <?php
$gruss = "Hallo Welt";
echo chop($gruss, "Welt");
?>

Bleibt der 2te Parameter leer, also die zu entfernenden Zeichen, wird am rechten Ende folgendes entfernt.

Trimmen Leerzeichen entfernen
trim()

siehe auch PHP Manual trim

Leerzeichen können zu Fehlern führen, daher ist es gut zu wissen, wie man diese entfernt. Da im folgenden Beispiel ein Leerzeichen hinter AG steht, kommt es zu einem unschönen Ergebnis.

nö, die Firma heißt anders <?php
$Firma = "Monster AG ";
if($Firma =="Monster AG"){
echo "das stimmt";
}
else{
echo "nö, die Firma heißt anders";
}
?>
Mit trim() kann man derartige Fehlinterpretationen verhindern, da führende und folgende Leerzeichen entfernt werden. Das läßt sich natürlich auch gut in Formularfeldern einsetzen. Führende Leerzeichen kann man mit ltrim und nachfolgende mit chop entfernen.
das stimmt <?php
$Firma = "Monster AG ";
if(trim($Firma) =="Monster AG"){
echo "das stimmt";
}
else{
echo "nö, die Firma heißt anders";
}
?>

trim() definierte Zeichen entfernen

 

Ein zweiter Parameter bei trim() ermöglicht die Angabe, welche Zeichen am Anfang und Ende entfernt werden sollen. Es können auch mehrere unterschiedliche Zeichen sein.

Im folgendem Beispiel werden Punkte und einfache Anführungszeichen am Anfang und Ende entfernt.

$name = "'O'Brian'...";
echo trim($name, "'.'");

O'Brian

Groß und Kleinbuchstaben
strtolower() strtoupper()

Die Verwandlung in Groß oder Kleinbuchstaben kann man auch gut dazu einsetzen, Zeichenketten unabhängig von Groß- und Kleinschreibung zu überprüfen (siehe Beispiel if...).

Beide Funktionen gibt es auch als Multibyte Funktionen: mb_strtolower, mb_strtoupper

monster ag
MONSTER AG
<?php
echo strtolower($Firma),"<br>";
echo strtoupper($Firma);
?>
das stimmt <?php
$schimpfwort="blödmann";
if(strtolower("Blödmann")==strtolower($schimpfwort)){
echo "das stimmt";
}
else{
echo "das stimmt nicht";
}
?>

Strings zerlegen
strtok()

Formulareingaben sind immer strings, oft muß man diese in Teile zerlegen. Das kann man mit der Funktion strtok() machen. Die Argrumente sind Text (bzw.Variable) und Trennzeichen. Nach dem erneuten Aufruf von strtok reicht das zweite Argument.

Hallo,
Welt
<?php
$text="Hallo, Welt";
echo strtok($text," ");
echo "<br>";
echo strtok(" ");
?>
Hier bietet sich natürlich eine Schleife an. Als Bedingung wird hier die Variable $Teil angegeben, der mittels strtok() Einzelteile von $Datum zugewiesen werden. Wenn keine weiteren Teile vorhanden sind, wird der Wert false zurückgeliefert und die Schleife beendet.
23
04
2002
<?php
$Datum = "23.04.2002";
$Teil=strtok($Datum,".");
while($Teil){
echo $Teil,"<br>";
$Teil = strtok(".");
}
?>


explode()

String 2 Array

Eine strtok() sehr ähnliche Funktion ist explode(), wo jedoch ein Array ausgegeben wird, dessen Elemente man in einer Schleife auslesen kann. Hierbei ist das erste Argument das Trennzeichen, das zweite der auszulesende Textstring.

30
02
1879
<?php
$Datum = "30.02.1879";
$Teile=explode(".",$Datum);
foreach($Teile as $Teil){
echo $Teil, "<br>";
}
?>

implode()

Array 2 String

Das Gegenstück implode() wird dazu verwendet, die Elemente eines Arrays zu einem Textstring zusammenzufügen. Als erstes Argument wird ein "Trennzeichen" (hier der br Tag) und als zweites Argument der Arrayname angegeben. Wie man sieht ist hier keine Schleife erforderlich.

Sonntag
Montag
Dienstag
Mittwoch
Donnerstag
Freitag
Samstag
<?php
$Wochentage=array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
echo implode("<br>",$Wochentage);
?>

Formatierte Ausgaben
printf () & sprintf()

siehe auch EDV Lehrgang printf()

Ausgaben kann man mit echo oder print erzeugen. Außerdem kann man mit printf() oder sprintf() Ausgaben mit bestimmte Formatierungen erzeugen. Der Unterschied zwischen printf() und sprintf() ist folgender mit printf() wird die Ausgabe direkt an den Browser übergeben wie bei echo. Mit sprintf() wird eine Zeichenfolge erzeugt, die man einer Variablen übergeben kann, oder mittels echo ausgeben kann.

Beide Zeilen erzeugen die Ausgabe im Browser:
Hallo Beate und Herbert.

    $name = "Beate";
    $partner = "Herbert";
    echo sprintf("Hallo %s und %s", $name, $partner);
    printf("Hallo %s" und %s, $name, $partner);
    

Beide Funktionen benötigen als erstes Argument einen String in dem sich ein oder mehrere Formatspezifkatoren befinden. Im Beispiel oben sind es die %s Zeichen. Nach diesem String folgen mehrere Argumente, die in der gleichen Reihenfolge den Formatspezifkatoren zugewiesen werden. Das erste Argument nach dem String wird dem ersten Formatspezifikator zugewiesen, das zweite Argument nach dem String wird dem zweiten Formatspezifikator zugewiesen u.s.w. Diese Reihenfolge kann man ändern, dazu später mehr. Weitere Formatspezifikatoren siehe unten.

$x = 134.5678

Unterschied printf() und sprintf()
EUR 134.57 <?php
printf("EUR %.2f", $x);
?>
EUR 134.57 <?php
echo sprintf("EUR %.2f", $x);
?>

Das erste Argument ist der String mit den Formatzuweisungen, die weiteren Argumente enthalten die zu formatierenden Werte. Der Formatspezifikator wird mit dem Prozentzeichen eingeleitet, der Text davor wird unverändert ausgegeben.

Formatspezifikatoren

In den folgenden Beispielen gibt es eine Variable $x;

$x = 1234.5678;

Format-spezifikator Beispiel Ausgabe Erklärung
%d printf(" %d", $x);
1234 Ganzzahl vorzeichenbehaftet
%s printf("%s", $x);
1234.5678 String Zeichenkette
%b printf(" %b", $x);
10011010010 Ganzzahl als Binärzahl
%x printf(" %x", $x); 4d2 Ganzzahl als Hexdezimalzahl
%f printf("%f", $x);
1234.567800 Fließkommazahl mit mindestens 6 Stellen hinter dem Komma
%.2f printf(%.2f", $x);
1234.57 Fließkommazahl mit 2 Stellen hinter dem Punkt (Komma). Die Anzahl wird nach einem Punkt angegeben.
%05d
printf("%05d", $x);
01234 Hat man insgesamt weniger als 5 Zeichen inklusive Nachkommstellen, werden Nullen vorangestellt. Das d definiert eine Ganzzahl.
%08.2f printf(" %08.2f", $x);
01234.57 Hat man insgesamt weniger als 8 Zeichen inklusive Nachkommstellen, werden 0 Nullen vorangestellt. Es werden 2 Stellen nach dem Komma angezeigt wegen .2f
%'*7d printf("%'*7d", $x);
***1234 Möchte man ein anderes Zeichen voranstellen muss man ein Hochkomma davor angeben.
Wäre der gesamte String in Hochkomma eingeschlossen, würde man ein doppeltes Anführungszeichen nach dem Prozentzeichen einsetzen.
%2$s $a = "Hut";
$b = "Stock";
printf('%2$s und %1$s', $a, $b);
Stock und Hut

Reihenfolge festlegen. Hat man mehrere Formatspezifkatoren gilt der erste für das erste Argument nach dem String, der nächste für das zweite usw. Man kann die Reihenfolge ändern mit einer Zahl und einem darauf folgendem Dollarzeichen.

Achtung!
Keine doppelten Anführungszeichen in printf() oder sprintf() verwenden.

 

Ausdrücke evaluieren
eval()

Will man Strings in Ausdrücke umwandeln und zur Laufzeit auswerten, braucht man die Funktion eval(). Das Argument der Funktion muß ausführbaren Code enthalten, wobei auch der abschließende Strichpunkt nicht fehlen darf, z.B. eine Ausgabe mit echo. Auch hier dürfen keine Anführungszeichen verschachtelt sein, deshalb sollte man einfache Anführungszeichen verwenden oder das Escape Zeichen (den Backslash \ ) vor die Anführungszeichen setzen. Im dritten Beispiel sieht man, dass sich auch Variablen einsetzen lassen.

MwSt: 160Euro <?php
eval ("echo 'MwSt: ', 1000*0.16, 'Euro';");
?>
MwSt:160Euro <?php
eval ("echo \"MwSt:\" ,1000*0.16 , \"Euro\" ;");
?>
MwSt:160Euro <?php
$MwSt = 0.16;
eval ("echo \"MwSt:\" ,1000*$MwSt, \"Euro\";");
?>

Reguläre Ausdruck / regexp

PHP Manual Regx Methoden

siehe meine Javascript Tipps Regex.

Beispielsammlung regulärer Ausdrücke

Mit regulären Ausdrücken (Regex) kann man ein Muster definieren, mit dem man eine Zeichenkette durchsucht. So lässt sich beispielsweise untersuchen, ob es sich formal um eine gütlige Email Adresse handelt. Man könnte ein Muster definieren, dass alle Worte, die mit S anfangen, findet. Auch komplexere Anfragen sind möglich, beispielsweise um die Vorgabe für ein Passowort zu definieren, welches aus einer Mindestanzahl bestehen muss und in dem bestimmte Zeichen vorkommen müssen.

Reguläre Ausdrücke können als Filterkriterien in der Textsuche verwendet werden, indem der Text mit dem Muster des regulären Ausdrucks abgeglichen wird.

Um reguläre Ausdrücke zu nutzen, erstellt man zuerst ein Muster. Dann kann man mit verschiedenen Funktionen einen String auf dieses Muster durchsuchen oder Teile des Strings anhand des Musters ersetzen. Ein Muster erstellt man innerhalb von 2 Slashes /
preg_match()liefert einen boolschen Wert, 1=true oder 0=false;

            $info = "Riggediriggedirick";
            $muster = "/di/";
            echo preg_match($muster, $info);
        

Man kann mit preg_replace() auch Stellen in einem String ersetzen.

            $info = "xxx hat ein großes Raumschiff.";
            $muster = "/xxx/";
            $name = "Rick";
            echo preg_replace($muster, $name, $info);
        

Regeln für Muster

Es folgen einige Regeln für Muster. Weitere Regeln siehe Javascript Tipps.

Man kann mit eckigen Klammern eine einfache Zeichenklasse definieren. Das bedeutet, dass nur eines der Zeichen vorkommen muss. Im folgendem Beispiel wird true geliefert wenn ein a oder b oder c vorkommt.
/[abc]/

Für die Muster gibt es vordefinierte Zeichenklassen, wie
Ziffern von 0 bis 9 \d
Whitespace \s
Zeichen das keine Zahl ist \D

Es gibt Begrenzungen für Anfang und Ende
Anfang der Zeile ^
Ende der Zeile oder Eingabe $
Wortabgrenzung \b

Es gibt Quantifizierer mit denen man bestimmen kann wieviele Zeichen oder Zeichenklassen oder Gruppen vorkommen müssen.
? bedeutet höchstens 1 mal
* 0 mal oder mehrmals
+ einmal oder mehrmals
{n} genaues Vorkommen n mal
{n,m} mindestens n mal höchstens m mal

Man kann mit runden Klammern Gruppen bilden, auf die man auch einen Quantifizierer anwenden kann. Im folgendem Beispiel muss vorkommen: lalalalolo davor und dahinter können weitere Zeichen folgen
/(la){3}(lo){2}/

Beispiele

Es folgen ein paar Beispiele zum kopieren, einfügen, ausprobieren.

    $info = "Rigge di rigge di rick";
    $muster = "/di/";
    echo preg_match($muster, $info); //erste Ausgabe

    echo "<br>\n";

    //eckige Klammern, bedeutet, wenn eins der Zeichen vorkommt wird true geliefert
    $muster = "/[döa]/";
    echo preg_match($muster, $info); //zweite Ausgabe

    echo "<br>\n";


    //man kann mehrere Bereiche in Klammern notieren
    //. ein beliebiges Zeichen
    //* das voranstehende Zeichen 0 mal oder mehrmals
    //In dem String muss mindestens 2 mal di vorkommen
    $muster = "/(di)(.*)(di)/";
    echo preg_match($muster, $info); //dritte Ausgabe

    echo "<br>\n";

    //{2} genaues Vorkommen des vorangegangenen Zeichens oder der Gruppe
    //auch hier muss 2 mal di vorkommen
    $muster = "/(di.*){2}/";
    echo preg_match($muster, $info); //vierte Ausgabe

    echo "<br>\n";

    //^Anfang der Zeile
    // $Ende der Zeile
    //[A-Za-z] Groß und Kleinbuchstaben
    //es müssen 3 Großbuchstaben sein

    $info = "BDF";
    $muster = "/^[A-Z]{3}$/";
    echo preg_match($muster, $info); //fünfte Ausgabe
    echo "<br>\n";

    //{3,4} das vorangegangene Zeichen oder Gruppe mindestens 3 höchstens 4 mal
    //3 Buchstaben und 4 Zahlen
    $info = "aDs4305";
    $muster = "/^[A-Za-z]{3}[0-9]{4}$/";
    echo preg_match($muster, $info);//sechste Ausgabe

Beispiel Passwort

Es folgt ein Beispiel mit Erklärung für eine Passworteingabe. Das Passwort muss eines der Sonderzeichen !$& enthalten und aus mindesten 8 Zeichen bestehen. Erklärungen auf der Seite.

Passwort Formulareingabe

if (isset($_POST["gesendet"])) {

        $info = trim($_POST["passwort"]);
        $muster = "/^(?=.*[!&$])(?=.*[A-Za-z0-9]).{5,}$/";

        if (preg_match($muster, $info)) {
            echo "Das Paswort ist gültig";
        } else {
            echo "Das Passwort ist nicht gültig. 
Es muss mindestens 8 Zeichen haben und mindestens eines der folgenden Zeichen enthalten:
!$&"; } }

 


Webdesign / PHP / mySQL / Dreamweaver MX Tipps
Copyright © Michael Albers
www.pastorpixel.de