Des guillemets unicode exotiques cassent les liens

Je constate des liens eronnés dans les messages de notification envoyés par no-reply [at] seenthis.net, pour des posts issus de la syndication d’un site SPIP par seenthis.

Dans le feed généré view-source:https://www.passerelleco.info/?page=backend&dest=seenthis , le html a l’air correct, et le rendu affiché par seenthis est correct : https://seenthis.net/messages/1120888

C’est dans le mail seulement que se manifeste le problème : il y a plusieurs liens corrects mais celui après « Lire sur » est suffixé par un espèce de guillemet double qui le rend inopérant.

Dans le feed, on trouve <a href="https://www.passerelleco.info/3326">Lire sur https://passerelleco.info/3326</a>

Par contre, dans le source du mail reçu on voit que le guillemet double est non ascii : Lire sur https://passerelleco.info/3326❞

C’est en fait un ❞ = HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT qui a été introduit.

Je vois plusieurs endroits où seenthis introduit un tel glyphe perturbateur

  • la fonction message_texte veut « retransformer la version HTML d'un message en un texte utilisable sous ATOM (atom_me.html) ou par email (seenthis_notifier.php) » et ajoute ce glyphe en cas de blockquote :
$texte = preg_replace(",<blockquote[^>]*>( |\n)*,", "\n\n❝", $texte);
$texte = preg_replace(",( |\n)*<\/blockquote[^>]*>,", "❞\n\n", $texte);

Ça supposerait donc que le blockquote a été introduit, avant, ailleurs.

a.internal-link::after {     content: '❞';  text-decoration: none;}    }    

Et effectivement, ça apparaît après le lien, mais je vois pas comment ce traitement css se traduirait par une alteration du texte du mail.

if (vals['extrait']) {
		content += "\n" + vals['extrait'] + "\n";
	}

J'ai ciblé en ne cherchant que dans les repo de l'organisation seenthis qui avaient reçu un commit depuis moins d'un an : seenthis, squeleton, squelettes et microcache.

Modification effectuée par JLuc