caractères non SGML dans les posts et caractères réservés XML (Créer un compte)

  • Statut : non résolu
9 sujets de 1 à 9 (sur un total de 9)
  • Auteur
    Messages
  • #446628
    clansco
    Participant
    Initié WordPress
    13 contributions

    Bonjour,
    j’avais signalé deux troubles à un blog tournant sur WP :
    – des caractères non SGML dans les posts,
    ce qui rend les pages non valides XHTML.
    – des caractères réservés XML non échappés dans les fils RSS
    ce qui empéche de les lire.

    pour voir, j’ai reproduit les bugs dans un WP fraichement installé :

    pour les caractères non SGML on peut voir ici :
    http://clansco.info/blog/
    un email de ben avec des ?uvres

    et pour le xml :
    http://clansco.info/blog/?feed=rss2&p=5
    (tester sur firefox, fil_LE bloque aussi)

    c’est du natif WP, comme je viens à peine
    de découvrir WP, je me permets de poster ici pour avoir des
    avis avant de poster en anglais dans la section bugs présumés,
    je suis nul en anglais.

    merci par avance,
    amicalement,
    ff

    #567161
    xavier
    Participant
    Maître WordPress
    2124 contributions

    WP est utf-8 par défaut, apparemment tes caractères ont été entrés en iso-8859-1, d’où problème.
    Je ne sais pas comment tu t’y es pris, tes titres ont l’air en iso et tes textes en utf… Un réglage à changer kekpart ?

    #567162
    clansco
    Participant
    Initié WordPress
    13 contributions

    il suffit de copier-coller.
    et le problème c’est que quand il y a des dizaines d’utilisateurs, il est impossible de faire comprendre à tous qu’il ne faut pas faire ceci ou cela. donc obligation de filtrer.
    j’ai vu un post sur le forum wp english, où on semble prendre ce pb à la légère …
    j’ai essayé de souligner l’importance, mais vu mon niveau d’anglais … 😮
    http://wordpress.org/support/topic/49247

    #567163
    clansco
    Participant
    Initié WordPress
    13 contributions

    pour la question des caractères réservés dans un fichier XML (ici les fils RSS) :

    j’ai trouvé ça dans wp-includes/default-filters.php , lignes 74 à 76 :

    add_filter(‘the_title_rss’, ‘strip_tags’);
    add_filter(‘the_title_rss’, ‘ent2ncr’, 8);
    add_filter(‘the_content_rss’, ‘ent2ncr’, 8);

    le troisième paramêtre est priority
    add_filter(‘hook_name’, ‘your_filter’, [priority], [accepted_args]);
    http://codex.wordpress.org/Plugin_API#Filters

    on trouve le filtre ent2ncr dans wp-includes/functions-formatting.php
    à la ligne 726, et elle remplace
    ‘&’ => ‘&’,

    à priori tout semble clean, juste à vérifier les priorités.

    mais là je vois plus ennuyeux :

    dans le code source de http://clansco.info/blog/ on lit :

    <div class="post">
    <h2 id="post-5"><a href="http://clansco.info/blog/?p=5" rel="bookmark" title="Lien permanent pour test &">test &</a></h2>
    <small>12 novembre 2005 <!-- par Administrator --></small>

    <div class="entry">
    <p>test & <> ? ?
    </p>
    </div>


    <p class="postmetadata">Publié dans <a href="http://clansco.info/blog/?cat=1" title="Voir tous les articles dans Uncategorized" rel="category tag">Uncategorized</a> <strong>|</strong> <a href="http://clansco.info/blog/wp-admin/post.php?action=edit&post=5">Modifier</a> <strong>|</strong> <a href="http://clansco.info/blog/?p=5#comments">Aucun commentaire »</a></p>

    <!–


    –>
    </div>

    et dans le code source de http://clansco.info/blog/?feed=rss2&p=5 onlit :

    <!-- generator="wordpress/1.5.2" -->


    <title>Comments on: test &</title>
    http://clansco.info/blog/?p=5
    le blog de ClanscoTribues
    Thu, 17 Nov 2005 12:43:55 +0000
    http://wordpress.org/?v=1.5.2

    donc on voit que dans la page, il y a un commentaire dc:title= »test & »
    et qu’il semble que dc:title ne soit pas échappé et utilisé pour fabriquer
    le titre du fil rss …

    bref, ça viendrait de là ??
    encore une fois, je découvre wp et je ne suis pas certain de ce que je dis …

    amicalement,
    ff

    #567164
    clansco
    Participant
    Initié WordPress
    13 contributions

    je pense avoir situé l’erreur pour le & non échappé dans les titres :

    dans wp-includes/functions-formatting.php à partir de la ligne 99

    function wp_specialchars( $text, $quotes = 0 ) {
    // Like htmlspecialchars except don’t double-encode HTML entities
    $text = preg_replace(‘/&([^#])(?![a-z12]{1,8}😉/’, ‘&$1’, $text);

    ça ne remplace pas le & tout seul
    en rajoutant juste après la ligne :
    $text = str_replace(‘&’, ‘&’, $text);

    ça résoud mon problème, voir :
    http://clansco.info/blog/ et http://clansco.info/blog/?feed=rss2

    seulement, n’aurais-je pas introduit un nouveau problème ???

    à suivre

    #567165
    clansco
    Participant
    Initié WordPress
    13 contributions

    la solution élégante me semble être de créer une nouvelle fonction :
    dans default-filers on ajouterait :
    add_filter(‘the_title_rss’, ‘escape_amp’);
    et dans function-formatting on ajouterait :
    function escape_amp( $text) {
    $text = str_replace(‘&’, ‘&’, $text);
    }

    #567166
    z720
    Membre
    Maître WordPress
    578 contributions

    As-tu vérifié si le bug est référencé dans la roadmap de développement de WordPress ?

    #567167
    clansco
    Participant
    Initié WordPress
    13 contributions

    j’ai vérifié qu’il n’était pas dans le tracker,
    il y a bien le Ticket #1451 :
    If there are special characters in the Blog’s title, they are not correctly escaped in the RSS feeds.
    la priorité est basse car ce n’est signalé que pour le titre du blog,
    Priority: low Severity: minor
    le problème est génant car ceci est aussi valable pour les titres des posts,
    et il semble que les musiciens adorent les titres genre John&michelle

    #567168
    xavier
    Participant
    Maître WordPress
    2124 contributions

    Aaaah, Crosby, Stills & Nash… 😉
    & Young !

9 sujets de 1 à 9 (sur un total de 9)
  • Vous devez être connecté pour répondre à ce sujet.