Sven Rautenberg: mailto - Link mit "&" im Subject, z.B. "R&B-Platten gesucht"

Beitrag lesen

Moin!

Habe mit Deinem Tip folgendes PHP-Konstrukt gebastelt, mit den Mailern von Mozilla und Netscape 4 tut´s jetzt auch:

"?subject=Ihre%20Anzeige%20im%20Intranet:%20" . htmlentities(str_replace(array(" ","&"), array("%20","%26"), $zeile["kurztext"])) ?>"

Das ist suboptimal.

Wenn du einen String als Wert in einer URL stehen haben willst, gibt es in PHP die wunderbare Funktion urlencode(). Die ersetzt dir alle problematischen Zeichen durch ihre %Hex-Darstellung - auch das Leerzeichen, auch das Ampersand.

Mit htmlentities() wirst du hingegen Schiffbruch erleiden.

Mit anderen Worten: Wenn du als Parameter des Links den Parameter mit Namen "subject" mit einem Wert versorgen willst, mach es so:
"<a href... ?subject=".urlencode($zeile['kurztext'])">".htmlentities($zeile['kurztext']).</a>"

htmlentities() wandelt alle im String enthaltenen Zeichen in Entities, damit die Zeichen auf der Seite exakt so erscheinen, wie im String (also auch alle <, > und &).

urlencode() wandelt alle im String enthaltenen Zeichen so, dass man sie als URL-Parameterwert problemlos verwenden kann.

Zwei Anwendungsziele - zwei Codierungen - zwei dafür geeignete Funktionen. Alles ist bestens.

Der Vollständigkeit halber sei noch die Funktion rawurlencode() erwähnt. Mit der hatte ich bei der Übergabe eines Pfades mal mehr Glück (lies: nur damit ging es seltsamerweise). Sie codiert etwas anders bzw. vollständiger, ist aber genauso kompatibel.

Werde mal darüber nachdenken, ob ich die Mail nicht gleich mit PHP verschicke, ist eh netter...

Und auch gar nicht so schwer zu realisieren.

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)