bug sur |liens_absolus #3456

Closed
opened 8 years ago by Fil · 5 comments
Fil commented 8 years ago
Owner

La fonction des liens absolus recherche bêtement src=… sur tout le contenu de la balise img, ce qui fait que si on a un data-original-src="xxxx", il ne trouve pas le src= et rate sa cible.

Proposition de patch :

 // ne s'applique qu'aux textes contenant des liens
 // http://doc.spip.org/`liens_absolus
 function liens_absolus($texte, $base='') {
-       if (preg_match_all(',(<(a|link|image)[[:space:]]+[^<>]*href=["\']?)([^"\' ><[:space:]]+)([^<>]*>),imsS', 
+       if (preg_match_all(',(<(a|link|image|img|script)\s[^<>]*(href|src)=[^<>]*>),imsS', 
        $texte, $liens, PREG_SET_ORDER)) {
                foreach ($liens as $lien) {
-                       $abs = url_absolue($lien[3], $base);
-                       if ($abs <> $lien[3] and !preg_match('/^#/',$lien[3]))
-                               $texte = str_replace($lien[0], $lien[1].$abs.$lien[4], $texte);
+                       foreach(array('href', 'src') as $attr) {
+                               $href = extraire_attribut($lien[0], $attr);
+                               if (strlen($href)>0) {
+                                       $abs = url_absolue($href, $base);
+                                       if ($href != $abs and !preg_match('/^#/',$href)) {
+                                               $texte = inserer_attribut($texte, $attr, $abs);
+                                       }
+                               }
+                       }
                }
        }
-       if (preg_match_all(',(<(img|script)[[:space:]]+[^<>]*src=["\']?)([^"\' ><[:space:]]+)([^<>]*>),imsS', 
-       $texte, $liens, PREG_SET_ORDER)) {
-               foreach ($liens as $lien) {
-                       $abs = url_absolue($lien[3], $base);
-                       if ($abs <> $lien[3])
-                               $texte = str_replace($lien[0], $lien[1].$abs.$lien[4], $texte);
-               }
-       }
+
        return $texte;
 }
La fonction des liens absolus recherche bêtement src=… sur tout le contenu de la balise img, ce qui fait que si on a un data-original-src="xxxx", il ne trouve pas le src= et rate sa cible. Proposition de patch : ``` // ne s'applique qu'aux textes contenant des liens // http://doc.spip.org/`liens_absolus function liens_absolus($texte, $base='') { - if (preg_match_all(',(<(a|link|image)[[:space:]]+[^<>]*href=["\']?)([^"\' ><[:space:]]+)([^<>]*>),imsS', + if (preg_match_all(',(<(a|link|image|img|script)\s[^<>]*(href|src)=[^<>]*>),imsS', $texte, $liens, PREG_SET_ORDER)) { foreach ($liens as $lien) { - $abs = url_absolue($lien[3], $base); - if ($abs <> $lien[3] and !preg_match('/^#/',$lien[3])) - $texte = str_replace($lien[0], $lien[1].$abs.$lien[4], $texte); + foreach(array('href', 'src') as $attr) { + $href = extraire_attribut($lien[0], $attr); + if (strlen($href)>0) { + $abs = url_absolue($href, $base); + if ($href != $abs and !preg_match('/^#/',$href)) { + $texte = inserer_attribut($texte, $attr, $abs); + } + } + } } } - if (preg_match_all(',(<(img|script)[[:space:]]+[^<>]*src=["\']?)([^"\' ><[:space:]]+)([^<>]*>),imsS', - $texte, $liens, PREG_SET_ORDER)) { - foreach ($liens as $lien) { - $abs = url_absolue($lien[3], $base); - if ($abs <> $lien[3]) - $texte = str_replace($lien[0], $lien[1].$abs.$lien[4], $texte); - } - } + return $texte; } ```
b_b commented 8 years ago
Owner

gogogo non ?

gogogo non ?
Fil commented 8 years ago
Poster
Owner

intégré en r22281 et r22282

intégré en r22281 et r22282
b_b commented 8 years ago
Owner

Super, on ferme :)
Statut changé à Fermé

Super, on ferme :) **Statut changé à Fermé**

Je rouvre .

modif de Kent1

https://core.spip.net/projects/spip/repository/revisions/22384
https://core.spip.net/projects/spip/repository/revisions/22385

patch à valider sur une 2.1
Statut changé à En cours

Je rouvre . modif de Kent1 https://core.spip.net/projects/spip/repository/revisions/22384 https://core.spip.net/projects/spip/repository/revisions/22385 patch à valider sur une 2.1 **Statut changé à En cours**
b_b commented 8 years ago
Owner

Testé, approuvé, reporté par r22388. Merci kent1, on ferme :)
Statut changé à Fermé

Testé, approuvé, reporté par r22388. Merci kent1, on ferme :) **Statut changé à Fermé**
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.