String-Manipulationen

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.
print 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.
Wie schon am Anfang erwähnt werden $Variablen in Strings durch den Wert der Variablen ersetzt.
Will man das verhindern kann man den String in einfache Anführungzeichen setzen. Eine andere Möglichkeit ist der Einsatz des Escape-Zeichens, dem Backslash. Dadurch wird das Dollarzeichen nicht als Kennung der Variablen interpretiert.
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";
?>

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";
}
?>

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 vergleichen
strpos()

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);
?>


Ausgabe eines Teilstrings
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
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);
?>
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);
?>

Trimmen Leerzeichen entfernen
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 Fehleinschätzungen 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";
}
?>

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...).

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(".");
}
?>

Teilstring als Array
explode()

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()

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);
?>

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\";");
?>

Formatierte Ausgabe
printf () sprintf()

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);
?>
Das erste Argument ist die Formatzuweisung, das zweite Argument enthält den zu formatierenden Wert. Die Formatierung wird mit dem Prozentzeichen eingeleitet, der Text davor wird unverändert ausgegeben.
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);
?>

 


Praxisbeispiel
Übersicht weiter
Webdesign / PHP / mySQL / Dreamweaver MX Tipps
Copyright © Michael Albers
www.pastorpixel.de
www.pastorpixel.de PHP mySQL Tipps