dedlfix: Wörter in substr nicht zerhacken

Beitrag lesen

echo $begrüßung;

$piece2 = substr($piece, 0, strlen(strrchr($piece,32))*(-1));

"Schneide mir aus $piece einen Teilstring heraus.
Beginne dabei an der Stelle Null,

Soweit richtig ...

und höre ein Zeichen vor (-1)  dem letzten Vorkommen (strrchr) des Leerzeichens (in der ASCII-Tabelle hat das die Nummer 32) auf."

... doch das ist unvollständig oder nicht richtig erklärt (-1)

strrchr liefert den Rest von $piece zurück, der mit dem letzten Vorkommen eines Leerzeichens beginnt. (Statt 32 hätte hier auch ' ' stehen können.) Von diesem Reststring wird die Länge mit strlen ermittelt und dieses Ergebnis durch Multiplikation mit -1 ( *(-1) ) in einen negativer Wert gewandelt - ein einfaches Minus vor dem strlen hätte es auch getan.

Was der negative Wert in substr() bewirkt steht im Handbuch.

Das ganze lässt sich auch leicht selbst nachvollziehen, wenn man die Teile aus der Formel von innen nach außen herausnimmt und sie einzeln ausführt.
Hilfreich ist dabei var_dump(), weil damit der Typ und ggf. die Länge des Variableninhaltes angezeigt werden. Das kann einen vor falschen Schlüssen bewahren, wenn man bei der Ausgabe im Browser nicht beachtet, dass dieser bestimmte Eigenheiten bei der Ausgabe hat. Z.B. werden mehrere white space-Zeichen zusammengefasst.

echo "$verabschiedung $name";