IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Bug de duplication d'url


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Bug de duplication d'url
    Bonjour à tous, voici mon petit problème,

    Je dispose d'un site avec une tribune/chat, petit problème quand quelqu'un poste plusieurs fois la même url ceci s'affiche : http://uppix.net/wqdI8a.png. Évidemment si on ne poste qu'une fois l'url, tout fonctionne parfaitement. http://uppix.net/YxNMX2.png

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    function transform_url($text){
     
        // On recherche les urls dans $text
        $pattern = "/((http|https|ftp):\/\/[a-z0-9;\/\?:@=\&\$\-_\.\+!*'\(\),~%#]+)/is";
        preg_match_all($pattern, $text, $arrayUrl);
     
        // Pour chaque url trouvée, on remplace par un contenu cliquable
        foreach($arrayUrl[0] as $url){
     
            // On va découper l'url
            $urlParse = parse_url($url);
            if(substr($urlParse['host'], 0, 4) == "www.") $urlParse['host'] = substr($urlParse['host'], 4);
     
            // Si l'url contient un '.' (il y a une extension)
            if(strrchr($url, '.')){
     
                // On détermine l'extension, donc le type de fichier
                $ext_t = strtolower(substr(strrchr($url, '.'), 1));
                if(substr($ext_t, -1)=='/') $ext_t = substr($ext_t , 0, strlen($ext_t)-1);
     
                // L'url est une image :
                if($ext_t=='jpeg'||$ext_t=='jpg'||$ext_t=='bmp'||$ext_t=='gif'||$ext_t=='png'||$ext_t=='tga')$show = 'image';
     
                // L'url est une vidéo :
                elseif($ext_t=='mpeg'||$ext_t=='mpg'||$ext_t=='avi'||$ext_t=='wmv'||$ext_t=='mov')$show = 'video';
     
                // L'url est un son :
                elseif($ext_t=='mp3'||$ext_t=='ogg'||$ext_t=='wma'||$ext_t=='wav'||$ext_t=='ra')$show = 'audio';
     
                // L'url est une archive :
                elseif($ext_t=='zip'||$ext_t=='rar'||$ext_t=='gz'||$ext_t=='ace'||$ext_t=='7z')$show = 'archive';
     
                // L'url est un executable :
                elseif($ext_t=='exe'||$ext_t=='bat')$show = 'exe';
     
                // L'url est du flash :
                elseif($ext_t=='swf')$show = 'flash';
     
                // On ne sait pas ce que contient l'url...
                else $show = 'url';
     
                // On remplace le texte....
                $replacementtext = '';
                if($show == 'image'){
                    $replacementtext = "<a href=\"".$url."\" rel=\"lightbox\" title=\"".$url."\"><img src=\"imgs/Picture.png\" /></a> <a href=\"$url\" alt=\"$url\" title=\"".$url."\">$urlParse[host]</a>";
    			}elseif($show == 'url'){
    				if($urlParse['host'] == 'amazon.fr') {
    					$replacementtext = '<a href="'.$url.'?&tag=leorlandos-21">'.$urlParse['host'].'</a>';
    				} elseif($urlParse['host'] == 'amazon.co.uk') {
    					$replacementtext = '<a href="'.$url.'?&tag=leorlandos-21">'.$urlParse['host'].'</a>';
    				} elseif($urlParse['host'] == 'amazon.com') {
    					$replacementtext = '<a href="'.$url.'?&tag=leorlandos-21">'.$urlParse['host'].'</a>';
    				} else {
    					$replacementtext = " <a href=\"$url\" alt=\"$url\"  title=\"".$url."\">$urlParse[host]</a>";
    				}
                }else{
                	$replacementtext = " <img src=\"imgs/$show.png\" /> <a href=\"$url\" alt=\"$url\"  title=\"".$url."\">$urlParse[host]</a>";
     
                }
     
                $text = str_replace($url, $replacementtext, $text);
     
    		}else{
     
                $show = 'url';
                $text = str_replace($url, "<a href=\"$url\" alt=\"$url\">$show</a>", $text);
     
     
            }
        }
        return $text;
    }
    Pourriez-vous m'aider et m'indiquer d'où vient le problème ?

    D'avance merci !
    Bonne soirée

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    => array_unique() pour supprimer les doublons avant traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	$arrayUrl_unique = array_unique($arrayUrl[0]);
        foreach($arrayUrl_unique as $url){

  3. #3
    Candidat au Club
    Inscrit en
    Août 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Parfait, merci beaucoup jreaux62 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bug genant de l'url-rewriting
    Par Machu13 dans le forum Apache
    Réponses: 1
    Dernier message: 04/03/2015, 22h04
  2. Réponses: 10
    Dernier message: 07/04/2010, 02h55
  3. BUG sur duplication d'onglet
    Par benoit.ad dans le forum Général VBA
    Réponses: 5
    Dernier message: 03/11/2006, 14h50
  4. [VB6][Excel] bug dans la duplication des zones nommees
    Par hirochirak dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 30/05/2006, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo