Changeset 84886 in spip-zone for _plugins_/aspirateur


Ignore:
Timestamp:
Sep 26, 2014, 1:21:15 PM (6 years ago)
Author:
toutati@…
Message:

pour url_nettoyer
include_spip('action/editer_url');
suffira

Location:
_plugins_/aspirateur
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/aspirateur/inc/aspirer_memo.php

    r84327 r84886  
    7171        }
    7272        //passage en minuscules (filtre SPIP d'urls_etendus)
    73         $url_parent=aspirateur_url_nettoyer($url_parent,50);
     73        // pour url_nettoyer
     74        include_spip('action/editer_url');
     75        $url_parent=url_nettoyer($url_parent,50);
    7476        $m = md5($url_parent);
    7577        $md5url_parent=substr($m, 0, 5)."_".basename($url_parent);
     
    7779        return $aspirateur_tmp_liste;
    7880}
    79 
    80 
    81 /**
    82  *
    83  * Fonction reprise de SPIP (plugin dist urls_etendues)
    84  *
    85  * todo, sortir la fonction url_nettoyer pour être réutilisable ici ou ailleurs
    86  *
    87  *
    88 **/
    89 function aspirateur_url_nettoyer($titre,$longueur_maxi,$longueur_min=0,$separateur='-',$filtre=''){
    90 
    91         $titre = supprimer_tags(supprimer_numero(extraire_multi($titre)));
    92         $url = translitteration(corriger_caracteres($titre));
    93 
    94         if ($filtre)
    95                 $url = $filtre($url);
    96 
    97         // on va convertir tous les caracteres de ponctuation et espaces
    98         // a l'exception de l'underscore (_), car on veut le conserver dans l'url
    99         $url = str_replace('_', chr(7), $url);
    100         $url = @preg_replace(',[[:punct:][:space:]]+,u', ' ', $url);
    101         $url = str_replace(chr(7), '_', $url);
    102 
    103         // S'il reste trop de caracteres non latins, les gerer comme wikipedia
    104         // avec rawurlencode :
    105         if (preg_match_all(",[^a-zA-Z0-9 _]+,", $url, $r, PREG_SET_ORDER)) {
    106                 foreach ($r as $regs) {
    107                         $url = substr_replace($url, rawurlencode($regs[0]),
    108                                 strpos($url, $regs[0]), strlen($regs[0]));
    109                 }
    110         }
    111 
    112         // S'il reste trop peu, renvoyer vide
    113         if (strlen($url) < $longueur_min)
    114                 return '';
    115 
    116         // Sinon couper les mots et les relier par des $separateur
    117         $mots = preg_split(",[^a-zA-Z0-9_%]+,", $url);
    118         $url = '';
    119         foreach ($mots as $mot) {
    120                 if (!strlen($mot)) continue;
    121                 $url2 = $url.$separateur.$mot;
    122 
    123                 // Si on depasse $longueur_maxi caracteres, s'arreter
    124                 // ne pas compter 3 caracteres pour %E9 mais un seul
    125                 $long = preg_replace(',%.,', '', $url2);
    126                 if (strlen($long) > $longueur_maxi) {
    127                         break;
    128                 }
    129 
    130                 $url = $url2;
    131         }
    132         $url = substr($url, 1);
    133 
    134         // On enregistre en utf-8 dans la base
    135         $url = rawurldecode($url);
    136 
    137         if (strlen($url) < $longueur_min)
    138                 return '';
    139         return $url;
    140 }
  • _plugins_/aspirateur/paquet.xml

    r84305 r84886  
    88        documentation=""
    99>
    10 
    1110        <nom>Aspirateur</nom>
    1211
Note: See TracChangeset for help on using the changeset viewer.