Le bouton de partage Bluesky sans erreur W3C
Une petite astuce pour créer un lien de partage Bluesky sans erreur.
Les variables
Ces deux variables servent à écrire automatiquement le titre d'un article et son lien dans les liens de partage.
(A noter que ces variables sont placées juste après le DOCTYPE car elles servent aussi pour l'Open Graph sur ce blog)
<?php
$titre = "Le tritre de l'article"
$lien = "Le lien de l'article"
?>
La conversion de certains caractères dans le lien de partage
Il y a plusieurs façons d'encoder une URL, de mon coté j'utilise la fonction PHP str_replace qui fonctionne parfaitement, en gros j'obtiens le même résultat que si j'utilisais la fonction PHP urlencode mais en plus pratique de mon coté.
(Pour info les lignes de code ci-dessous sont placés dans le même include que le lien de partage)
<?php
$titre = str_replace(" ", "%20", $titre);
$titre = str_replace("'", "%27", $titre);
$titre = str_replace("é", "%C3%A9", $titre);
$titre = str_replace("è", "%C3%A8", $titre);
$titre = str_replace("ê", "%C3%AA", $titre);
$titre = str_replace("à", "%C3%A0", $titre);
$titre = str_replace("â", "%C3%A2", $titre);
$titre = str_replace("ô", "%C3%B4", $titre);
?>
Le lien final
Ce lien est placé dans un include en bas de chaque article.
(Pour info, partagebluebas sert uniquement à des réglages CSS comme par exemple l'affichage de l'icone Bluesky en background-image)
<a href="https://bsky.app/intent/compose?text=<?php echo $titre; ?>+<?php echo $lien; ?>" id="partagebluebas">Bluesky</a>
Passons à l'erreur W3C
Si je supprime toutes les variables W3C m'indique que les espaces dans le titre de l'article ne sont pas autorisés.

Si je replace les variables W3C m'indique qu'il n'y a plus d'erreur.

La correction du coté de Bluesky
Pendant longtemps toutes les variables étaient utiles mais Bluesky s'améliore et corrige petit à petit les problèmes.
En mars 2025 je découvre que les erreurs sur les caractères accentués ont été corrigés par Bluesky, seul l'espace reste en erreur dans W3C donc le seule variable utile pour ne pas avoir d'erreur W3C est celle-ci.
<?php
$titre = str_replace(" ", "%20", $titre);
?>
Le code final est donc..
A placer dans un include pour mieux le corriger en cas de besoin
<?php
$titre = str_replace(" ", "%20", $titre);
?>
<a href="https://bsky.app/intent/compose?text=<?php echo $titre; ?>+<?php echo $lien; ?>" id="partagebluebas">Bluesky</a>
(Mise à jour le 17 mars 2025)