mit Stringmanipulationen werden Zeichenfolgen ausgewertet und verändert.
Funktion | Bedeutung |
---|---|
chop | Entfernt folgende Leerzeichen am rechten Ende |
eval | Wertet einen als String übergebenen Ausdruck aus. |
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. |
ltrim | Entfernt führende Leerzeichen |
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 |
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. |
trim | Entfernt führende und folgende Leerzeichen. |
ereg_replace | Sucht nach einem Teilstring innerhalb eines Strings und ersetzt diesen durch einen anderen String. |
wordwrap | Führt nach einer bestimmenden Zeichenzahl einen Zeilenumbruch durch. |
Multibyte Funktionen umfassen auch die deutschen Umlaute und das ß.
$info = "Hallöchen Welt, wie geht es dir?";
Die Anzahl der Zeichen
32
Alles in Kleinbuchstaben.
hallöchen welt, wie geht es dir?
Alles in Großbuchstaben
HALLÖCHEN WELT, WIE GEHT ES DIR?
Die Zeichen werden in einem Feld hinterlegt.
Siehe auch explode() und implode()
Gibt die Codenummer des Zeichens aus.
83
Gibt das Zeichens einer Codenummer aus.
b
Position vom Anfang der Zeichenkette aus gesehen.
6
Position vom Anfang, Groß und Kleinschreibung wird nicht unterschieden
0
Vom Ende aus gesehen.
22
Vom Ende aus Groß- und Kleinschreibung wird nicht unterschieden.
22
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.
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 einem Zeichen sucht, welches 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); |
ein Stringverleich vergleicht eine gesamte Zeichenfolge oder Teile daraus.
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"; } ?> |
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"; } ?> |
Will man nur einen Teil des Strings vergleichen, kann man 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 strpos($Lied,$Wort); ?> |
das Wort ist vorhanden | <?php $Wort= "Emanuel"; $Lied = "Ach komm ach komm Emanuel"; if(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 strpos($text,"Hirt"), "<br>"; echo strpos($text,"H"), "<br>"; echo strpos($text,"r",23), "<br>"; echo strpos($text,"r",0); ?> |
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); ?> |
.php | <?php $Pfad="D:\documente\vertraulich\amigo.php"; $Pos = strpos($Pfad, "."); $Len = strlen($Pfad); echo substr($Pfad, $Pos, $Len-$Pos); ?> |
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.
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"; } ?> |
das stimmt | <?php $Firma = "Monster AG "; if(trim($Firma) =="Monster AG"){ echo "das stimmt"; } else{ echo "nö, die Firma heißt anders"; } ?> |
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...).
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"; } ?> |
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(" "); ?> |
23 04 2002 |
<?php $Datum = "23.04.2002"; $Teil=strtok($Datum,"."); while($Teil){ echo $Teil,"<br>"; $Teil = strtok("."); } ?> |
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>"; } ?> |
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); ?> |
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\";"); ?> |
siehe auch EDV Lehrgang printf()
Ausgaben kann man mit echo oder
print erzeugen. Mit printf()
oder sprintf()
lassen sich bestimmte
Formatierungen erzeugen. Der Unterschied 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.
$name = "Beate"; $partner = "Herbert"; echo sprintf("Hallo %s und %s", $name, $partner); printf("Hallo %s" und %s, $name, $partner);
Beide Funktionen haben als ersten Parameter einen String mit Formatspezifkatoren %s
oder auch nur einen oder mehrere Formatspezifkatoren in Anführungszeichen. Dann folgen mehrere Argumente, die in der gleichen Reihenfolge den Formatspezifkatoren zugewiesen werden. Der erste Paramateter nach dem String, dem ersten Formatspezifikator, der zweite nach dem String dem zweiten. Diese Reihenfolge kann man ändern, dazu später mehr.
$x = 134.5678
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. Die Formatierung wird mit dem Prozentzeichen eingeleitet, der Text davor wird unverändert ausgegeben.
In den folgenden Beispielen gibt es eine Variable $x;
$x = 1234.5678;
Parameter | 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 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. |
%'*7d | printf("%'*7d"); |
***1234 | Möchte man ein anderes Zeichen voranstellen muss man ein Hochkomma davor angeben, sofern alles in doppelten Anführungszeichen steht. Ansonten umgekehrt. |
%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. Setzt man den erste Parameter (den String), in printf() in doppelte Anführungszeichen, wird ein Fehler erzeugt. Ich weiß nicht warum. |
Webdesign / PHP / mySQL / Dreamweaver MX Tipps
Copyright © Michael Albers
www.pastorpixel.de