String

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.

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


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

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


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

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 Ausgaben
printf () & sprintf()

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