Sie sind auf Seite 1von 4

String-Manipulationen

mit Stringmanipulationen w erden Zeichenfolgen ausgew ertet und verndert. Funktion chop chr eval explode implode ltrim ord print printf strcasecmp strchr strcmp strlen strpos strstr strtolow er strtoupper substr strtok trim Bedeutung Entfernt folgende Leerzeichen Liefert das zu einem bestimmten ASCII Wert gehrende Zeichen Wertet einen als String bergebenen Ausdruck aus. Zerlegt eine Zeichenfolge in einzelne Teile, w obei sich die Aufteilung an bestimmten Zeichen orientiert, z.B. dem Leerzeichen. Die einzelnen Strings w erden in einem Array abgelegt Setzt die Werte eines Arrays, separiert durch ein Trennzeichen, zu einem String zusammen. Entfernt fhrende Leerzeichen Ermittelt den ASCII-Wert eines Zeichens. Gibt Werte aus. Gibt formatierte Werte aus Vergleicht zw ei Strings ohne Bercksichtigung von Gro- und Kleinschreibung. Suche in einem String nach einem Zeichen. Vergleicht zw ei Strings. Ermittelt die Lnge eines Strings Ermittelt die Position eines Strings in einem anderen String. Sucht in einem anderen String nach einem String Verw andelt die Buchstaben eines Strings in Kleinbuchstaben Verw andelt die Buchstaben eines Strings in Grobuchstaben Liefert einen Teilstring aus einem String Zerlegt einen String in einzelne Teile, w obei ein Trennzeichen, etw a das Leerzeichen, bestimmt, w o getrennt w erden soll. Die Funktion liefert bei jedem erneuten Aufruf den jew eils nchsten Teilstring. Entfernt fhrende und folgende Leerzeichen.

ereg_replace Sucht nach einem Teilstring innerhalb eines Strings und ersetzt diesen durch einen anderen String. w ordw rap Fhrt nach einer bestimmenden Zeichenzahl einen Zeilenumbruch durch. W ie schon am Anfang erw hnt w erden $Variablen in Strings durch den Wert der Variablen ersetzt. W ill man das verhindern kann man den String in einfache Anfhrungzeichen setzen. Eine andere Mglichkeit ist der Einsatz des EscapeZeichens, dem Backslash. Dadurch w ird das Dollarzeichen nicht als Kennung der Variablen interpretiert. Hallo Herr Maier <?php $Name = Maier; echo "Hallo Herr $Name"; ?> <?php $Name = Maier; echo 'Hallo Herr $Name'; ?> <?php $Name = Maier; echo "Hallo Herr \$Name"; ?>

Hallo Herr $Name

Hallo Herr $Name

Stringvergleich
ein Stringverleich vergleicht eine gesamte Zeichenfolge oder Teile daraus.

gesamte Zeichenfolge vergleichen


Fr die gesamte Zeichenfolge nimmt man das doppelte Gleichheitszeichen. Dadurch w ird true (bzw . 1) zurckgegeben. <?php echo "Bldmann"=="Bldmann"; ?> <?php if("Bldmann"=="bldmann"){ echo "das stimmt"; } else{ echo "das stimmt nicht"; } ?>

das stimmt nicht

strcasecmp()
Um Gro und Kleinschreibung nicht zu beachten, verw endet man strcasecmp. Hier w ird bei bereinstimmung der Wert 0 zurckgegeben. <?php echo strcasecmp("grne Vase", "Grne Vase"),"<br>"; echo strcasecmp("Grne Vase", "grne vase"),"<br>"; echo strcasecmp("Grne Vase", "Grne Vase"); ?>

0 0 0

The file was converted using http://www.convertapi.com Please purchase credits to remove this text http://www.convertapi.com/prices

das stimmt

<?php $Teststring = strcasecmp("grne Vase", "Grne Vase"); if($Teststring==0){ echo "das stimmt"; } else{ echo "das stimmt nicht"; } ?>

Teilzeichenfolge vergleichen strpos()


W ill 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. Auerdem w erden Leerzeichen natrlich auch mitgezhlt. Man kann in einer if Abfrage testen, ob das Wort in einem Text vorhanden ist. Jedoch sollte man w ie unten im Beispiel >-1 anstatt >=0 schreiben, da 0 gleichzeitig fr den Wert false steht, w as zu Problemen fhren kann. Das erste Argument ist die lange Zeichenkette, in der gesucht w ird, das zw eite Argument ist die Zeichenkette, nach der gesucht w erden soll. Als drittes Argument kann man optional einen Zahlenw ert angeben, w elcher die Position bestimmt, ab der gesucht w ird. Das heit bei 0 w ird vom ersten Buchstaben an gesucht. <? $Lied = "Ein Danklied sei dem Herrn fr alle seine Gnade"; $Wort= "Herrn"; echo strpos($Lied,$Wort); ?> <?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"; } ?> <?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); ?>

21

das Wort ist vorhanden

5 5 25 7

Ausgabe eines Teilstrings substr() mittels substr() lassen sich Teile einer Zeichenkette ausgeben. Es w erden 3 Argumente erw artet,
1. die Zeichenkette, 2. die Startposition beginnend bei 0, fr den ersten Buchstaben 3. die Anzahl der auszugebenden Zeichen. <?php $text="Mein Hirt ist Gott der Herr, er w ird mich immer w eiden. Er w altet nah und fern."; echo substr($text,23,4); ?>

Herr

Im folgenden Beispiel w ird nach der Dateiendung in einer Pfadangabe gesucht. Dabei w ird zuerst die Position des Punktes ermittelt. Anschlieend die Gesamtlnge der Zeichenfolge mittels strlen(). Zum Schlu w ird damit die gew nschte Formel gebildet. <?php $Pfad="D:\documente\vertraulich\amigo.php"; $Pos = strpos($Pfad, "."); $Len = strlen($Pfad); echo substr($Pfad, $Pos, $Len-$Pos); ?>

.php

Trimmen Leerzeichen entfernen trim()


Leerzeichen knnen zu Fehlern fhren, daher ist es gut zu w issen, w ie man diese entfernt. Da im folgenden Beispiel ein Leerzeichen hinter AG steht, kommt es zu einem unschnen Ergebnis. <?php $Firma = "Monster AG "; if($Firma =="Monster AG"){ echo "das stimmt"; } else{ echo "n, die Firma heit anders"; } ?>

n, die Firma heit anders

Mit trim() kann man derartige Fehleinschtzungen verhindern, da fhrende und folgende Leerzeichen entfernt w erden. Das lt sich natrlich auch gut in Formularfeldern einsetzen. Fhrende Leerzeichen kann man mit ltrim und nachfolgende mit chop entfernen. <?php $Firma = "Monster AG "; if(trim($Firma) =="Monster AG"){ echo "das stimmt"; das stimmt } else{ echo "n, die Firma heit anders"; } ?>

The file was converted using http://www.convertapi.com Please purchase credits to remove this text http://www.convertapi.com/prices

Gro und Kleinbuchstaben strtolower() strtoupper()


Die Verw andlung in Gro oder Kleinbuchstaben kann man auch gut dazu einsetzen, Zeichenketten unabhngig von Gro- und Kleinschreibung zu berprfen (siehe Beispiel if...). <?php echo strtolow er($Firma),"<br>"; echo strtoupper($Firma); ?> <?php $schimpfw ort="bldmann"; if(strtolow er("Bldmann")==strtolow er($schimpfw ort)){ echo "das stimmt"; } else{ echo "das stimmt nicht"; } ?>

monster ag MONSTER AG

das stimmt

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 zw eite Argument. <?php $text="Hallo, Welt"; echo strtok($text," "); echo "<br>"; echo strtok(" "); ?>

Hallo, Welt

Hier bietet sich natrlich eine Schleife an. Als Bedingung w ird hier die Variable $Teil angegeben, der mittels strtok() Einzelteile von $Datum zugew iesen w erden. Wenn keine w eiteren Teile vorhanden sind, w ird der Wert false zurckgeliefert und die Schleife beendet. <?php $Datum = "23.04.2002"; $Teil=strtok($Datum,"."); 23 w hile($Teil){ 04 echo $Teil,"<br>"; 2002 $Teil = strtok("."); } ?>

Teilstring als Array explode()


Eine strtok() sehr hnliche Funktion ist explode(), w o jedoch ein Array ausgegeben w ird, dessen Elemente man in einer Schleife auslesen kann. Hierbei ist das erste Argument das Trennzeichen, das zw eite der auszulesende Textstring. <?php $Datum = "30.02.1879"; $Teile=explode(".",$Datum); foreach($Teile as $Teil){ echo $Teil, "<br>"; } ?>

30 02 1879

implode()
Das Gegenstck implode() w ird dazu verw endet, die Elemente eines Arrays zu einem Textstring zusammenzufgen. Als erstes Argument w ird ein "Trennzeichen" (hier der br Tag) und als zw eites Argument der Arrayname angegeben. W ie man sieht ist hier keine Schleife erforderlich. Sonntag Montag Dienstag Mittw och Donnerstag Freitag Samstag

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

Ausdrcke evaluieren eval()


W ill man Strings in Ausdrcke umw andeln und zur Laufzeit ausw erten, braucht man die Funktion eval(). Das Argument der Funktion mu ausfhrbaren Code enthalten, w obei auch der abschlieende Strichpunkt nicht fehlen darf, z.B. eine Ausgabe mit echo. Auch hier drfen keine Anfhrungszeichen verschachtelt sein, deshalb sollte man einfache Anfhrungszeichen verw enden oder das Escape Zeichen (den Backslash \ ) vor die Anfhrungszeichen setzen. Im dritten Beispiel sieht man, dass sich auch Variablen einsetzen lassen. <?php eval ("echo 'Mw St: ', 1000*0.16, 'Euro';"); ?> <?php eval ("echo \"Mw St:\" ,1000*0.16 , \"Euro\" ;"); ?> <?php $Mw St = 0.16; eval ("echo \"Mw St:\" ,1000*$Mw St, \"Euro\";"); ?>

Mw St: 160Euro

Mw St:160Euro

Mw St:160Euro

Formatierte Ausgabe printf () sprintf()


W ie w ir w issen sollten, w erden Ausgaben mit echo oder print erzeugt. Mit printf() oder sprintf() lassen sich bestimmte Formatierungen The file was converted using http://www.convertapi.com Please purchase credits to remove this text http://www.convertapi.com/prices

erzeugen. Der Unterschied ist folgender mit printf w ird die Ausgabe direkt an den Brow ser bergeben mit sprintf w ird eine Zeichenfolge erzeugt, die man einer Variablen bergeben kann, oder mittels echo ausgeben kann. <?php printf("EUR %010.4f", 1234.56789); ?>

EUR 01234.5679

<?php echo sprintf("EUR %010.4f", 1234.56789); ?> Das erste Argument ist die Formatzuw eisung, das zw eite Argument enthlt den zu formatierenden Wert. Die Formatierung w ird mit dem Prozentzeichen eingeleitet, der Text davor w ird unverndert ausgegeben. EUR 01234.5679 Beispiel EUR 01234.5679 EUR 1234.5679 EUR *1234.5679 EUR 1234.56790 Funktion Format <?php printf("EUR %010.4f", 1234.56789); ?> <?php printf("EUR %10.4f", 1234.56789); ?> <?php printf("EUR %'*10.4f", 1234.56789); ?> <?php printf("EUR %0-10.4f", 1234.56789); ?> Erklrung Das erste Zeichen definiert ein Fllzeichen hier die Null.

Wenn man darauf verzichtet, w ird stattdessen ein Leerzeichen genommen. Anderen Fllzeichen als der Null muss ein einfaches Anfhrungszeichen vorangestellt sein. Als zw eites Zeichen kann ein Minus Zeichen eingesetzt w erden, w as zur Folge hat, dass der Wert linksbndig ausgerichtet w ird und die Fllzeichen rechts vom Wert erscheinen. Als nchstes w ird die Anzahl der Vorkommastellen angegeben, gefolgt von einem Punkt und der Anzahl der Dezimalstellen. Fehlende Zeichen w erden mit dem Fllzeichen aufgefllt. Ich habe festgestellt, dass bei der Eingabe kleinerer anzuzeigender Werte, als in der Zahl vorhanden sind, merkw rdige Ungereimtheiten in den Nachkommastellen angezeigt w erden. Zum Schluss gibt man an, w ie der Wert zu behandeln ist, mglich sind:

EUR 1234.5679

<?php printf("EUR %0-8.4f", 1234.56789); ?>

-----------Dortmund

<?php printf("%'-20s", "Dortmund"); ?>

f Fliekommzahl d Integer s Zeichenkette b Binrzahlen

<?php 0000010100 printf("%010b", 20); ?> caca0 <?php printf("%x", 830624); ?>

x Hexadezimalzahl

Suchen und Ersetzen in einem String ereg_replace() ereg_replace(Suche,Ersetze,betroffene Variable) Hier w erden 3 Parameter erw artet, der String der ersetzt w erden soll, der String, w elcher den gefundenen String ersetzt und der gesamte String, in dem die Funktion ausgefhrt w ird. Hier w erden alle Strings, die dem ersten Parameter entsprechen, ersetzt durch den zw eiten Parameter. <?php Alle meine Entchen schw immen auf dem See. $einLied = "Alle meine Entchen schw immen auf dem Tmpel."; echo $einLied = ereg_replace("Tmpel", "See", $einLied); ?>

Praxisbeispiel bersicht w eiter Webdesign / PHP / mySQL / Dreamw eaver MX Tipps Copyright Michael Albers
www.pastorpixel.de

The file was converted using http://www.convertapi.com Please purchase credits to remove this text http://www.convertapi.com/prices