dedlfix: scho wieda der :-(..ä..bestimmten teil eines strings verändern

Beitrag lesen

echo $begrüßung;

so nun kann ja der teil bei href="" auch zeichen wie ?&= und leerzeichen enthalten, die nicht konform sind.
diese würde ich gerne mit urlencode entfernen.

Es ist keine gute Idee (<- gelinde ausgedrückt), den kompletten Wert des href-Attributes, also die gesamte URL, zu urlencodieren. Wenn du das dennoch tust, wird

http://example.com/pfad/ressource?param1=wert&param2=wert#anker

zu

http%3A%2F%2Fexample.com%2Fpfad%2Fressource%3Fparam1%3Dwert%26param2%3Dwert%23anker

und das ist dann keine gültige URL mehr.

Die URL soll im HTML-Kontext ausgegeben werden, also ist diese in erster Linie HTML-gerecht zu notieren (htmlspecialchars() reicht dafür). Innerhalb der URL sind vorher jedoch einige und nur einige, nicht alle Teile mit urlencode() zu behandeln. Die zu berücksichtigenden Teile sind die, welche Daten über die URL transportieren sollen, also nur die Werte der Parameter im Query-Teil.

Es ist also erforderlich, die URL in ihre Einzelteile zu zerlegen (parse_url()), dann den Query-String in Schlüssel und Werte aufzuteilen (parse_str()) und nun die einzelnen Werte mit urlencode() zu behandeln. Anschließend muss man das ganze wieder zu einer URL zusammenbauen und nach einer HTML-gerechten Kodierung kann man es dem href-Attribut übergeben.

echo "$verabschiedung $name";