bonjour,
et merci pour ce retour d’expérience.
jusqu’à la publication de ce message, je ne m’étais pas penché sur le problème pensant que je serais aller à la recherche d’une aiguille dans une botte de foin!
avec ce point d’entrée, j’ai regardé la fonction et je n’arrive pas à la même conclusion. je m’explique.
Cette fonction remplace (ou plus exactement, voudrait remplacer) toute chaine de caractères commençant par “http://” (j’oublie les autres protocoles) ou “www” par la même chaine encadrée par 2 balises [a] en faisant un lien vers la page qu’est censée représenter la chaine.
De plus les caractères http sont supprimés de la chaine affichée.
exemple:
http://www.clcii.fr ==> [a href=“http://www.clcii.fr” target="_blank"]www.clcii.fr[/a]
www.clcii.fr ==> [a href=“http://www.clcii.fr” target=_blank]www.clcii.fr[/a]
http://clcii.fr ==> [a href=“http://clcii.fr” target="_blank"]clcii.fr[/a]
Afin d’éviter de créer un nouveau lien à partir d’une chaine contenue dans une balise [a], les chaines précédées de “href=” ou “”" sont ignorées.
Ca fonctionne correctement tant qu’on a des chaines non précédées de balise [a].
Là ou ça se corse c’est lorsqu’on a des balises [a] qui peuvent contenir des chaines plus compliqées. j’ai trouvé
- une variable dans une URL = à http…,
- " devant http, remplacé par "
Ce sont 2 cas qui génère une balise [a] à tord.
Donc, je pense que la correction que tu suggère n’est pas la bonne: il faut bien laisser " dans la variable $NotAnchor, et en plus il faut ajouter " et =;
personnellement, je sugère la correction suivante en ligne 149:
// $NotAnchor = ‘(?<!"|href=|href\s=\s|href=\s|href\s=)’;
$NotAnchor = ‘(?<!"|"|=|href=|href\s=\s|href=\s|href\s=)’;
De plus je suggère de commenter la ligne 167; à mons avis, il manque le “;” (autant définir une seule fois la variable qui est déjà définie plus haut)
// $Subdir = ‘([\w-.,@?^=%&:/~+#]*[\w-@?^=%&/~+#])?’;
J’ai fait quelques tests avec ces modifs mais je ne suis pas sûr d’avoir corrigé tous les cas. Je continue mes observation et tiendrai au courant les lecteurs de ce post.
salutations à tous
christian