url // https://code.spip.net/@traiter_raccourci_liens function tw_autoliens($t) { defined('_EXTRAIRE_LIENS') || define('_EXTRAIRE_LIENS', ',' . '\[[^\[\]]*(?:<-|->).*?\]' . '|' . '|((?:https?:/|www\.)[^"\'\s\[\]\}\)<>]*)' . ',imsS'); $t = preg_replace_callback(_EXTRAIRE_LIENS, 'tw_traiter_autoliens', $t); // echapper les autoliens eventuellement inseres (en une seule fois) if (strpos($t, "") !== false) { $t = echappe_html($t); } return $t; } // callback pour la fonction autoliens() // https://code.spip.net/@autoliens_callback function tw_traiter_autoliens($r) { if (count($r) < 2) { return reset($r); } list($tout, $l) = $r; if (!$l) { return $tout; } // reperer le protocole if (preg_match(',^(https?):/*,S', $l, $m)) { $l = substr($l, strlen($m[0])); $protocol = $m[1]; } else { $protocol = 'http'; } // valider le nom de domaine if (!preg_match(_EXTRAIRE_DOMAINE, $l)) { return $tout; } // les ponctuations a la fin d'une URL n'en font certainement pas partie // en particulier le "|" quand elles sont dans un tableau a la SPIP preg_match('/^(.*?)([,.;?|]?)$/', $l, $k); $url = $protocol . '://' . $k[1]; $lien = charger_fonction('lien', 'inc'); // deux fois car inc_lien echappe un coup et restaure ensuite // => un perd 1 $r = $lien($url, "$url", '', '', '', 'nofollow') . $k[2]; // ajouter la class auto $r = inserer_attribut($r, 'class', trim(extraire_attribut($r, 'class') . ' auto')); // si l'original ne contenait pas le 'http:' on le supprime du clic return ($m ? $r : str_replace('>http://', '>', $r)); }