mit Stringmanipulationen werden Zeichenfolgen ausgewertet und verändert.
| Funktion | Bedeutung |
| chop | Entfernt folgende Leerzeichen |
| chr | Liefert das zu einem bestimmten ASCII Wert gehörende Zeichen |
| 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 |
| ord | Ermittelt den ASCII-Wert eines Zeichens. |
| Gibt Werte aus. | |
| printf | Gibt formatierte Werte aus |
| strcasecmp | Vergleicht zwei Strings ohne Berücksichtigung von Groß- und Kleinschreibung. |
| strchr | Suche in einem String nach einem Zeichen. |
| strcmp | Vergleicht zwei Strings. |
| 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. |
| Hallo Herr Maier | <?php $Name = Maier; echo "Hallo Herr $Name"; ?> |
| Hallo Herr $Name | <?php $Name = Maier; echo 'Hallo Herr $Name'; ?> |
| Hallo Herr $Name | <?php $Name = Maier; echo "Hallo Herr \$Name"; ?> |
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
3. die Anzahl der auszugebenden Zeichen.
| Herr | <?php $text="Mein Hirt ist Gott der Herr, er wird mich immer weiden. Er waltet nah und fern."; echo substr($text,23,4); ?> |
| .php | <?php $Pfad="D:\documente\vertraulich\amigo.php"; $Pos = strpos($Pfad, "."); $Len = strlen($Pfad); echo substr($Pfad, $Pos, $Len-$Pos); ?> |
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\";"); ?> |
Wie wir wissen sollten, werden Ausgaben mit echo oder print erzeugt. Mit printf() oder sprintf() lassen sich bestimmte Formatierungen erzeugen. Der Unterschied ist folgender mit printf wird die Ausgabe direkt an den Browser übergeben mit sprintf wird eine Zeichenfolge erzeugt, die man einer Variablen übergeben kann, oder mittels echo ausgeben kann.
| EUR 01234.5679 | <?php printf("EUR %010.4f", 1234.56789); ?> |
| EUR 01234.5679 | <?php echo sprintf("EUR %010.4f", 1234.56789); ?> |
| Beispiel | Funktion Format | Erklärung |
| EUR 01234.5679 | <?php printf("EUR %010.4f", 1234.56789); ?> |
Das erste Zeichen definiert ein Füllzeichen hier die Null. |
| EUR 1234.5679 | <?php printf("EUR %10.4f", 1234.56789); ?> |
Wenn man darauf verzichtet, wird stattdessen ein Leerzeichen genommen. |
| EUR *1234.5679 | <?php printf("EUR %'*10.4f", 1234.56789); ?> |
Anderen Füllzeichen als der Null muss ein einfaches Anführungszeichen vorangestellt sein. |
| EUR 1234.56790 | <?php printf("EUR %0-10.4f", 1234.56789); ?> |
Als zweites Zeichen kann ein Minus Zeichen eingesetzt werden, was zur Folge hat, dass der Wert linksbündig ausgerichtet wird und die Füllzeichen rechts vom Wert erscheinen. |
| EUR 1234.5679 | <?php printf("EUR %0-8.4f", 1234.56789); ?> |
Als nächstes wird die Anzahl der Vorkommastellen angegeben, gefolgt von einem Punkt und der Anzahl der Dezimalstellen. Fehlende Zeichen werden mit dem Füllzeichen aufgefüllt. Ich habe festgestellt, dass bei der Eingabe kleinerer anzuzeigender Werte, als in der Zahl vorhanden sind, merkwürdige Ungereimtheiten in den Nachkommastellen angezeigt werden. |
| ------------Dortmund | <?php printf("%'-20s", "Dortmund"); ?> |
Zum Schluss gibt man an, wie der Wert zu behandeln ist, möglich sind: f Fließkommzahl d Integer s Zeichenkette |
| 0000010100 | <?php printf("%010b", 20); ?> |
b Binärzahlen |
| caca0 | <?php printf("%x", 830624); ?> |
x Hexadezimalzahl |
Suchen und Ersetzen in einem String
ereg_replace()
ereg_replace(Suche,Ersetze,betroffene Variable)
Hier werden 3 Parameter erwartet, der String der ersetzt werden soll, der String, welcher den gefundenen String ersetzt und der gesamte String, in dem die Funktion ausgeführt wird.
Hier werden alle Strings, die dem ersten Parameter entsprechen, ersetzt durch den zweiten Parameter.
| Alle meine Entchen schwimmen auf dem See. | <?php $einLied = "Alle meine Entchen schwimmen auf dem Tümpel."; echo $einLied = ereg_replace("Tümpel", "See", $einLied); ?> |