Jörg Reinholz: Mail Empfänger / Betreff maskieren

Beitrag lesen

Moin!

Irgendwie blicke ich nicht durch.

Das ist doch einfach. Du musst Dich nur dumm stellen und stur "von innen nach außen" denken

  • Ersetzen aller " durch \\" im Name. Grund? Nächster Schritt:
  • Einschließen des Namens in ". Grund? Nächster Schritt:
  • Link wird im html nochmals in " eingeschlossen. Dann verwende auch htmlentities($to, ENT_COMPAT) um die " in " umzuwandeln.
<?php
$name = 'Shanty-Chor "Die Landratten"';
$mail = 'foo@example.com';
$to = '"' . str_replace('"', '\"', $name) . '" <' . $mail . '>';
$link = '<a href="mailto:' . htmlspecialchars($to) . '">' . htmlentities($name). '</a>';
echo $link, "<br>\n";

$name = "anges d'amour";
$mail = 'bar@example.com';
$to = '"' . str_replace('"', '\"', $name) . '" <' . $mail . '>';
$link = '<a href="mailto:' . htmlentities($to, ENT_COMPAT) . '">' . htmlentities($name). '</a>';
echo $link, "<br>";

Ergebnis:

<a href="mailto:&quot;Shanty-Chor \&quot;Die Landratten\&quot;&quot; &lt;foo@example.com&gt;">Shanty-Chor &quot;Die Landratten&quot;</a><br>
<a href="mailto:&quot;anges d'amour&quot; &lt;bar@example.com&gt;">anges d'amour</a><br>

Mehr ist nicht zu tun.

Tipp: Sende dem Browser ordentliche Header für die Kodierung (charset). Sonst geht's beim Umläuten daneben.

Jörg Reinholz