Maskierung
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
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

|
int strlen(<String>) |
Strlen gibt Ihnen die Möglichkeit, festzustellen, wie lang der String ist,
den Sie bearbeiten.
Explode

|
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

|
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

|
string htmlentities(<Quelle>); |
maskiert alle Umlaute und Sonderzeichen HTML-gerecht.
Aus ä wird ä usw... und aus < wird < -- was
z.B. wichtig ist dass keine Eingabe Javascript-Aktionen auslösen kann.
echo htmlentities ("äöüäüöß<\\"); // gibt aus: äöüäüö<\
rawurldecode

|
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

|
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

|
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

|
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

|
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

|
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

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