copyright (c)  2003   useGroup
PHP

Jochen Stärk
PHP-Tutorial
Arbeiten mit Strings

nach untenMaskierung
nach untenAneinanderreihen von Strings
nach untenstrlen
nach untenExplode
nach untenImplode
nach untenhtmlentities
nach untenrawurldecode
nach untensubstr
nach untenstrpos
nach untentrim
nach untenstrtolower, strtoupper
nach untensprintf
nach untenstr_replace
nach untenereg

Maskierung

nach obenMaskierung 

In C-ähnlichen Sprachen werden Zeichen in Strings durch ein Backslash (\) maskiert. Nicht-druckbare Zeichen wie Enter (neue Zeile) werden als n (newline) kodiert und durch einen Backslash wird der Interpreter darauf hingewiesen, dass ein Sonderzeichen folgt. (Daraus ergibt sich, dass der Befehl für "neue Zeile" \n lautet). Weiterhin interessant sind die Codes " (um "Gänsefüßchen" auszugeben, die normalerweise das Ende eines Strings bedeuten würden), \ (um Backslashes anzugeben, die normalerweise den Anfang einer Befehlssequenz bedeuten) und $ (um ein Dollarzeichen auszugeben das normalerweise das darauffolgende Wort als Variable parsen würde). Die Anweisung

$string="\"Hallo\nBackslash\" \\ "
ist jedoch durchaus korrekt: Die Ausgabe lautet
            "Hallo
            Backslash" \
            
         


Zwei Backslashes im String erzeugen ein sichtbares, drei erzeugen zwei usw..


Aneinanderreihen von Strings

nach obenAneinanderreihen von Strings 

Strings werden in PHP mit "." aneinandergereiht. Soll der i-te Besucher etwa kein Abstand nach seiner Nummer sehen ist man zu einem Trick gezwungen: da echo "Sie sind der $ite Besucher" nach einer -nicht vorhandenen - Variable namens ite suchen würde verwendet man entweder

echo "Sie sind der ";
echo $i;
echo "te Besucher";
oder das kürzere
echo "Sie sind der ".$i."te Besucher";
Wird an das Ende des Strings "Sie sind der " der String (die Variable $i wird hier als String aufgefasst) $i (Wert z.B. 5) angehängt, an die direkt der String "te Besucher". angehängt wird.


strlen

nach obenstrlen  int strlen(<String>)

Strlen gibt Ihnen die Möglichkeit, festzustellen, wie lang der String ist, den Sie bearbeiten.


Explode

nach obenExplode  array explode (<Trennzeichen>, <String>)

teilt einen String in ein Array. (In das erste Element der Abschnitt bis zum ersten Trennzeichen, in das zweite der Abschnitt vom ersten bis zum zweiten Trennzeichen usw. Die Trennzeichen kommen im Array nicht mehr vor.) Trennzeichen sind oft Einzelzeichen, können jedoch auch Strings sein.

  $mitarbieter = "Fr. Müller, Hr. Cambeis, Hr. Schreiber, Hr. Hoffmann, Fr. Gudelke";
  $personen = explode(",", $mitarbeiter);


Implode

nach obenImplode  string implode(<Trennzeichen>, <Array>);

Fügt einen Array aneinander in einen String zusammen, zwischen den Elementen werden Trennzeichen eingebaut. Trennzeichen sind oft Einzelzeichen, können jedoch auch Strings sein.

  $mitarbeiter = array("Fr. Müller", "Hr. Cambeis", "Hr. Schreiber", "Hr. Hoffmann", "Fr. Gudelke");
  $personen = implode(",", $mitarbeiter);
  echo $personen;


htmlentities

nach obenhtmlentities  string htmlentities(<Quelle>);

maskiert alle Umlaute und Sonderzeichen HTML-gerecht. Aus ä wird &auml; usw... und aus < wird &lt; -- was z.B. wichtig ist dass keine Eingabe Javascript-Aktionen auslösen kann.

echo htmlentities ("äöüäüöß<\\"); // gibt aus: äöüäüö<\


rawurldecode

nach obenrawurldecode  string rawurldecode(<Quelle>);

dekodiert eine URL - und ist ziemlich praktisch, wenn man wie in ein Form-Mailer den Query-String anfassen will.

$s=rawurlencode("String mit Sonderzeichen:äöüß&%$§\"\\ /");// Ergibt String%20mit%20Sonderzeichen%3A%E4%F6%FC%DF%26%25%22%5C%20%2F
echo $s;
echo rawurldecode ($s);


substr

nach obensubstr  string substr(<Quelle>, <Start>, [<Länge>] );

liefert aus Quelle ab Start Länge Zeichen zurück. Wenn keine Länge angegeben ist, wird der String ab Start bis zum Ende zurückgeliefert.

  echo substr("Personal Home Page Tools",9); // Home Page Tools
  echo substr("Personal Home Page Tools",9,9); // Home Page


strpos

nach obenstrpos  int strpos(<Gesamtstring>,<Teilstring>)

sucht nach Teilstring in Gesamtstring und gibt seine Position zurück. Wird der Teilstring nicht gefunden, wird der Wert null (nicht 0) zurückgegeben.

  echo strpos("Personal Home Page Tools","Home");
  echo " Searching once more: result=";
 if (strpos("Personal Home Page Tools","Hme")==null) echo "NULL";
  
Eine andere Möglichkeit nur nach dem Vorkommen des Teilstrings im String zu suchen ist strstr(<Gesamtstring>,<Teilstring>) : Diese Funktion liefert einen Boolean ob der Suchstring im Gesamtstring vorkommt.

Sollten Sie jemals auf die Idee kommen, wissen zu wollen, ob ein String am ANFANG eines anderen steht, werden Sie mit strpos Probleme bekommen, weil es 0 zurückliefert, wenn der String am Anfang steht, und null wenn er nicht enthalten ist. Null wird jedoch in allen Fällen in PHP mit ==0 als wahr verglichen, d.h. strpos($haystack, "$needle")==0 ist wahr, wenn der String am Anfang steht oder gar nicht vorkommt. Eine Möglichkeit, das Problem zu umschiffen, wird hier gezeigt:
	$spos=strpos($haystack, $needle);
  	if (is_int($spos)&&($spos==0)) 
  	{
	// $needle steht am Anfang von $haystack
  	}


trim

nach obentrim  string trim (<Quellstring>)

entfernt "Whitespace" vom Anfang und Ende des Quellstrings. Damit sind Leerzeichen, Sonderzeichen wie \n und andere Codes die kein druckbares Zeichen besitzen gemeint.

  echo trim("  \n\n\t\n\n\n dies ist ein whitespace ");


strtolower, strtoupper

nach obenstrtolower, strtoupper  string strtoXXXXX(<Quellstring>)

StrToLower konvertiert alle Zeichen im String in Kleinbuchstaben, StrToUpper in Großbuchstaben.

$s="Dies war gemischte Schreibweise mit Umlaut-ä.";
echo strtolower($s);
echo strtoupper($s);
Die Dokumentation sagt, Umlaute werden nach den lokalen Einstellungen umgewandelt (heißt das z.B. auf amerikanischen Servern überhaupt nicht?), bei mir (PHP/4.0.1 amerikanische Version), werden Sie konvertiert ohne dass ich etwas in der PHP.INI geändert hätte - dort finde ich auch keine Spracheinstellungen.


sprintf

nach obensprintf  string sprintf(<Quellstring>[, <Argumente>])

ist ein mächtiges Werkzeugt, Strings zu formatieren - und das einzige mir bekannte um Fließkommazahlen mit einer definierten Zahl Nachkommastellen auszugeben.

Die Position der Variable wird mit einem Prozentzeichen, ihr Typ mit einem Codebuchstaben festgehalten. Diese sind:

% Für ein echtes Prozentzeichen
b Als Integer, der binär dargestellt wird
c Als Integer, der mit seinem ASCII-Zeichendargestellt wird (siehe auch Funktion chr)
d Als Integer, dezimal dargestellt
f Als Double, Darstellung im Fließkomma-Standard
o Als Integer, der oktal (8-er-Zahlensystem) dargestellt wird
s Als String
x Als Integer, der hexadezimal (16-er-Zahlensystem) dargestellt wird, mit den Kleinbuchstaben a für 10, b für 11 ... f für 16
X Als Integer, der hexadezimal (16-er-Zahlensystem) dargestellt wird, mit den Großbuchstaben A für 10, B für 11 ... F für 16
Bei Fließkommazahlen kann die
<Anzahl der Vorkommastellen>.<Anzahl der Nachkommastellen>
zwischen Prozent und Code (bei Fließkomma: f) stehen.
$fliess=2/3;
echo $fliess;				//0.66666666666667
echo sprintf ("<br>Ergebnis mit sprintf:%1.4f!", $fliess);  	//Ergebnis mit sprintf:0.6667!
								// 1 Vorkomma, 4 Nachkommastellen
sprintf ist auch ein Ideales Werkzeug, um Strings aufzufüllen. In proportionalen Schriften möchte man teilweise dass von einem vom Benutzer eingebener String immer 10 Buchstaben angezeigt werden - wenn nötig mit 5 voranstehenden Leerzeichen. das geht bei sprintf so:
echo sprintf ("<br>%10s", "hallo welt");        // hallo welt
echo sprintf ("<br>%10s", "dies ist");          //   dies ist	
echo sprintf ("<br>%10s", "ein langer Satz");   // ein langer Satz
echo sprintf ("<br>%10.10s", "ein langer Satz");// ein langer 
Beim letzten Beispiel bedeutet 10.10 nicht zehn Vor und 10 Nachkommastellen sondern 10 Stellen UND MAXIMAL 10 Stellen.


str_replace

nach obenstr_replace  string str_replace(<Muster>, <Ersetzung>, <String>)

Ersetzt alle Vorkommnisse von Muster in String durch Ersetzung und liefert das Ergebnis als String zurück.

  $meinstring="Ich bin doch blöd.";
  echo str_replace("blöd", "nicht blöd", $meinstring);


ereg

nach obenereg 

Am Schluss die vielleicht mächtigsten Werkzeuge:

int ereg(<Suchausdruck>, <Vollstring>, [<Zielarray>]);
            string ereg_replace(<Suchausdruck>, <Ersetzung>, <Vollstring>);
            
         
wendet reguläre Ausdrücke auf Strings an (und hat den Programmierern von PHP zweifellos viel Kopfzerbrechen beschert). Mehr zu regulären Ausdrücken lesen Sie z.B. in Perl 5 by Example


copyright (c)  2003   useGroup