Transformer automatiquement des mots en lien.

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Magicarno, 27 Décembre 2007.

  1. Magicarno
    Magicarno Nouveau WRInaute
    Inscrit:
    23 Décembre 2007
    Messages:
    19
    J'aime reçus:
    0
    Bonjour,

    Je cherche soit un script tout fait soit une piste pour en développer un.
    Je veux en fait pouvoir automatiquement remplacer dans une zone de texte certains mots par des liens.

    Par exemple je poste une news du type...

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec molestie.
    Sed aliquam sem ut arcu. Phasellus sollicitudin. Vestibulum condimentum
    facilisis nulla. In hac habitasse platea dictumst. Nulla nonummy. Cras quis
    libero. Cras venenatis. Aliquam posuere lobortis pede. Nullam fringilla
    urna id leo. Praesent aliquet pretium erat. Praesent non odio. Pellentesque
    a magna a mauris vulputate lacinia. Aenean viverra. Class aptent taciti
    sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.
    Aliquam lacus. Mauris magna eros, semper a, tempor et, rutrum et, tortor.

    et je veux que sur le site (Php / Mysql) apparaisse

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec molestie.
    Sed aliquam sem ut arcu. Phasellus sollicitudin. Vestibulum condimentum
    facilisis nulla. In hac habitasse platea dictumst. Nulla nonummy. Cras quis
    libero. Cras venenatis. Aliquam posuere lobortis pede. Nullam fringilla
    urna id leo. Praesent aliquet pretium erat. Praesent non odio. Pellentesque
    a magna a mauris vulputate lacinia. Aenean viverra. Class aptent taciti
    sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.
    Aliquam lacus. Mauris magna eros, semper a, tempor et, rutrum et, tortor.

    Où en bleu on trouve des liens vers des articles en rapport avec les mots.
    En fait c'est un système équivalent aux nouveaux formats pubs de type Intellitxt mais adapté au surf sur un même site.

    Merci d'avance pour votre aide.
     
  2. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 003
    J'aime reçus:
    128
    En php tu te définis une sorte de dictionnaire de mot, et les url terminales relatives à ces mots, et tu fais un recherche-remplacer dans ton contenu avant de l'afficher.

    Le but étant de remplacer chaque occurence d'un mot présent dans le "dictionnaire" par un lien vers la page qui correspond à ce mot.

    Le tout lié à un système de cache pour pas trop surcharger.
     
  3. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    basiquement tu fais un tableau avec les mots et un simple str_replace devrait suffir. Tout depend de la quantité de mots que tu dois remplacer ?

    $texte = str_replace("mot","<a href="">mot</a>",$texte);
     
  4. cloacking
    cloacking WRInaute impliqué
    Inscrit:
    20 Octobre 2004
    Messages:
    589
    J'aime reçus:
    0
    Si il y en a + de 10.000 c'est grave docteur ?

    Je demande ça également car je comptais faire un adapt de mon nuage de Tags dans ce sens :)
     
  5. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    O!! 10 000 mots... preg devrait etre 10 à 20 fois plus rapide.

    preg_replace('`\b'.$mot.'\b`i','<a href="http://www.site.com/index.php?val=$0">$0</a>',$texte);
     
  6. darmond.j
    darmond.j WRInaute discret
    Inscrit:
    18 Février 2007
    Messages:
    217
    J'aime reçus:
    0
    merci KOogar ça va me servir :)
     
  7. ckarone
    ckarone WRInaute occasionnel
    Inscrit:
    29 Juin 2004
    Messages:
    451
    J'aime reçus:
    0
  8. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    J'ai ce script justement...

    Je te donnes quelques piste pour ne recherché que les mots qui t'intéresse sans tous les passer à la moulinette.

    Dans un premier temps, tu récupère tous les mots de ton texte :

    Code:
    $mots_texte = preg_split('#([\s/\[\]\\\@.,(){}><]+)#Us', $value, -1, PREG_SPLIT_NO_EMPTY); // Découpe du texte pour récupéré les mots séparés (pas de séparation des apostrophes)	
    $mots_texte_bis = preg_split('#([\s/\[\]\\\@.\',(){}><]+)#Us', $value, -1, PREG_SPLIT_NO_EMPTY); // Découpe du texte pour récupéré les mots séparés (séparation des apostrophe)
    $mots_texte = array_merge($mots_texte, $mots_texte_bis); // On combine les deux tableaux créés
    $mots_texte = array_unique($mots_texte); // On ne garde qu'une occurrence de chaque mot
    $mots_texte = array_slice($mots_texte, 0); // On réindexe le tableau à partir de 0
    Ensuite tu filtre un peu cette liste selon tes besoins (dans l'exemple, on ne garde que les mots de 2 caractères minimum, qui contiennent au moins une lettre, mais pas de chiffre) :

    Code:
    $mots_defin = '';
    $total_mots_texte = count($mots_texte);
    	
    for ($nb = 0; $nb < $total_mots_texte; $nb ++) {
      if (mb_strlen($mots_texte[$nb]) >= 2 && preg_match('#[a-zA-Z]#U', $mots_texte[$nb]) && !preg_match('#[0-9]#U', $mots_texte[$nb]) ) {
        $mots_defin .= $mots_texte[$nb].', '; // Préparation de la chaine de requête			
    
    Maintenant que tu sais quels mots auront éventuellement un lien tu envoi une requête SQL vers ta liste de mots.
    Dans mon cas, je tiens compte compte de la casse par exemple la planète Mars n'est pas le mois de mars... je tiens compte aussi de la possibilité qu'un terme puisse être retrouvé à partir de plusieurs forme (homonyme, pluriel, etc.). Je te laisse cherché un peu si tu veux adpaté cela à ton cas.

    Pour faire simple, dans une table, tu as les champs suivant :

    :arrow: le mot ou le groupe de mots sur lequel mettre un lien
    :arrow: une liste de mots clés ou groupe de mots séparé par une virgule

    Dans une autre, tu as une occurence de chaque mots séparé de tes mots clés avec l'identifiant correspondant ; c'est dans cette table que tu fera la recherche des termes de ton texte avec un WHERE cherche_mot IN('') en faisant un tri descendant pour mettre les mots les plus long au début ORDER BY Length(terme_lien) DESC.

    Maintenant on crée un tableau contenant, tes occurences accompagné de leurs mots-clés :

    Code:
    while ($terme = mysqli_fetch_assoc(ta_requête)) {
    $defin[] = array('keyword' => $terme['defin_keywords'], // Mots clés
    			'terme'	=> $terme['defin_nom']); // Nom
    }
    Il ne te reste plus qu'à mettre tes liens en place :

    Code:
    /* ****************************************************************************
    - comparaisonNombreCaractere($value_1, $value_2)
    - Permet de trier un tableau en fonction du nombre de caractère (tri ascendant)
    - À utiliser avec « usort() »
    - Dernière version : 22/09/07
    
    -$value_1 : Première valeur
    -$value_2 : Seconde valeur
    **************************************************************************** */
    function comparaisonNombreCaractere($value_1, $value_2) {
    
    	if (mb_strlen($value_1) == mb_strlen($value_2)) {
    		return 0;
        }
    	
    	if (mb_strlen($value_1) > mb_strlen($value_2)) {
    		return -1;
    	} else {
    		return 1;
    	}
    }
    
    		
    	// Mise en place du lien vers la définition du glossaire
    	if (isset($defin) ) {
    		$total_defin = count($defin);
    		
    		for	($nb = 0; $nb < $total_defin; $nb ++) {
    			unset($keywords, $keywords_majus);
    			
    			// Création du tableau de mots clés
    			$keywords_defaut = preg_split("/(, +)/", $defin[$nb]['keyword'], -1, PREG_SPLIT_NO_EMPTY); // Découpe des mots et expressions et mise dans un tableau
    			
    			// Création d'un second tableau avec une majuscule en début de chaque valeur
    			$total_keywords_defaut = count($keywords_defaut);
    			
    			for	($nb_1 = 0; $nb_1 < $total_keywords_defaut; $nb_1 ++) {
    				$keywords_majus[] = majuscule($keywords_defaut[$nb_1]);
    			}
    			
    			$keywords_liste = array_merge ($keywords_defaut, $keywords_majus); // Fusion des deux tableaux précédents
    			array_unique ($keywords_liste); // On ne garde qu'une occurence de chaque mots
    			usort ($keywords_liste, 'comparaisonNombreCaractere'); // Tri ascendant en fonction du nombre de caractères
    			
    			// Création de la liste de mots clés formatée pour la recherche				
    			$keywords = '';
    			$total_keywords_liste = count($keywords_liste);
    			
    			for ($nb_1 = 0; $nb_1 < $total_keywords_liste; $nb_1 ++) {
    				$keywords .= $keywords_liste[$nb_1].'|'; // préparation de la chaine des mots à recherché
    			}
    			
    			// Mise en plce du lien une seule fois par terme
    			$value = preg_replace('#(^|[\s\b\'(>])('.$keywords.')([\s\b.\],)<]|$)#U', '<a href="http://www.site.com/$1.html</a>', $value, 1);
    		}
    	}
    Mon script est assez complexe et je ne t'ai donné que ce qui peut t'intéressé. Désolé de ne pas te dévoiler la totalité, mais j'y est passé plus de 200 heures de recherche et de codage pour le finaliser.

    Par contre pense à faire une bonne mise en cache si tu as de très grandes pages.

    Espérant avoir pu t'aider :wink:
     
  9. nickargall
    nickargall WRInaute accro
    Inscrit:
    13 Juin 2005
    Messages:
    6 601
    J'aime reçus:
    4
    @medium69: pour la peine je recommande :)
     
  10. ckarone
    ckarone WRInaute occasionnel
    Inscrit:
    29 Juin 2004
    Messages:
    451
    J'aime reçus:
    0
    OUI, une reco pour moi aussi.
    Il y a de très bonnes idées dans ce script, notemment :
    "Dans mon cas, je tiens compte compte de la casse par exemple la planète Mars n'est pas le mois de mars... je tiens compte aussi de la possibilité qu'un terme puisse être retrouvé à partir de plusieurs forme (homonyme, pluriel, etc.)".

    Merci medium69
     
  11. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    merci pour ce code, surtout pour recuperer les mots, moi je me contentais d'un simple split("[^[:alpha:]]+", $texte)... et bien sur ca ne prenait pas les apostrophes en consideration...

    par contre le coté j'enlève les mots de 2 caracteres je trouve ca trés bof
    perso j'utilise cette liste:
    http://www.ranks.nl/stopwords/french.html
    et j'enleve les mots que je ne veux pas en 1 fois
    array_diff($regs,$table_mots_bannis)

    pour le reste j'ai pas suivie ton raisonnement
    je me contente de recherche les mots qui ont le plus d'occurence et je fais mes liens;

    Code:
    // groupe les Mots-clés identiques et on les compte
    $stats = array_count_values($regs);
    // trie par ordre croissant la liste
    array_multisort($stats, SORT_DESC);
    // crée un tableau avec les clés du tableau correpondants aux mots clés
    $tabKey = array_keys($stats);
    apres je fais les liens sur les mots et basta...

    tu as une url pour ton appli en production ?
     
  12. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Mon site :wink:

    Par contre je le répète, il faut une bonne mise en cache car certains traitement peuvent être long.

    Sur certaines de mes page, le traitement peut prendre jusqu'à 10 secondes. Il faut dire que je ne me contente pas uniquement de cela...
     
  13. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Je vais étudier cela pour optimiser mes scripts.
     
  14. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    le résultat est magnifique et grandement pertinant

    pourquoi faire une mise en cache ? c'est à chaque nouvelle insertion de documents qu'il faut placer les liens et la mise à jour est déjà dans la table sql.
     
  15. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Disons que je ne me contente pas uniquement de mettre des liens...

    Au sujet des liens, parfois, il ne faut pas que le mot soit pris en compte car dans le contexte il ne veut pas dire la même chose. dans ce cas, j'insère un filtre « § » juste à côté de ce mot ; il est enlevé avant la mise en page.
    De même un terme contenu dans une url, un attribut, etc. ne doit pas être pris en compte...
    J'ai plusieurs filtres pour plusieurs traitement selon mes besoins ; la majorité se mettent en place au fur et à mesure du traitement.

    En vrac et tout en automatique :
    :arrow: Ajout de liens (
    :arrow: Pris en compte des abréviations (abréviations courantes, formules chimiques, symbole monétaire, chimique, etc.)
    :arrow: Prise en compte des acronymes
    :arrow: Prise en compte des mots à mettre en gras

    Après un mediumCode ^^ pour :
    :arrow: Mise en place des illustrations avec leur légende avec une taille adapté au contexte
    :arrow: Mise en forme des tableau
    :arrow: Pris en compte de la langue
    :arrow: Mise en italique
    :arrow: Mise en forme des titres
    :arrow: Mise en place des liste
    :arrow: Et encore bien d'autres choses...

    Je t'envoi un MP pour un exemple concret de ce qui est en BDD et ce qui est à l'écran;)
     
  16. Static6000
    Static6000 WRInaute discret
    Inscrit:
    9 Février 2006
    Messages:
    101
    J'aime reçus:
    0
    je trouve l'idée excellente mais pourquoi faire ce genre de scripts ? avec des liens auto ? vous auriez un exemple précis ?
     
  17. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Pour gagner du temps en maintenance...

    Entre autres oui...

    Mon post plus haut :wink:
     
  18. Magicarno
    Magicarno Nouveau WRInaute
    Inscrit:
    23 Décembre 2007
    Messages:
    19
    J'aime reçus:
    0
    MERCI !!!

    Un grand merci pour vos réponses rapides et de qualité.
    Je vais donc me mettre au boulot.

    Pour répondre à Static6000, le but est de mettre en avant certains mots dans mes articles pour permettre aux visiteurs de suivre les liens pour en savoir plus...

    Encore merci.
     
  19. wullon
    wullon WRInaute accro
    Inscrit:
    18 Septembre 2004
    Messages:
    2 788
    J'aime reçus:
    0
    Question con, c'est pas plus simple/mieux de le faire manuellement ? Quand on écrit l'article ? A la manière de Wikipedia : on crée le lien, quitte à ce que ça soit une erreur 404 (bon après faut que le site soit conçu pour "supporter" ça au départ).

    Ça me semble plus efficace au final et surtout moins consommateur de ressources.
     
  20. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    oui et non...

    tu prend le risque effectivement de généré des erreurs 404 en pagaille, mais surtout tu pers un temps énorme à tout mettre en place...
    Imagine un site conçu avec ce principe pour des milliers d'articles ; en un mot, ingérable pour une personne seule ! J'avais commencé ainsi au début, et j'ai vite compris que cela n'était pas l'idéal.

    Aprèsil y à effectivement le problème des ressources ; on contourne le problème par une bonne mise en cache avec des délai de validité plus ou moins court en fonction des pages.
     
  21. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 833
    J'aime reçus:
    208
    C'est plus ou moins ce que j'ai fait, et ce n'est même pas générateur d'erreur 404, il suffit d'une petite fonction php qui teste si le mot est dans le dictionnaire de liens ou pas, et qui renvoie soit simplement le mot, soit le mot + le lien.

    L'avantage par rapport à la solution de medium69, c'est que ça permet de ne mettre qu'un ou deux liens dans la même page même si le mot est présent 5 ou 10 fois.
    Après il suffit de faire la maintenance de la base derrière.

    Mais ce n'est pas rétro-actif, c'est le seul problème.

    En même temps, sur un site donné, on peut avoir une idée des mots sur lesquels on veut faire un lien...
     
  22. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Le code que je propose permet de ne mettre le liens qu'une seule fois par page. le "1" en fin de code

    Code:
    $value = preg_replace('#(^|[\s\b\'(>])('.$keywords.')([\s\b.\],)<]|$)#U', '<a href="http://www.site.com/$1.html</a>', $value, 1); 
     
  23. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 833
    J'aime reçus:
    208
    Oui j'ai vu, mais si j'ai bien compris c'est du "tout ou rien" et pour tous les liens.
    Disons que parfois je "peaufine" un peu, ça dépend des pages et de la longueur du texte... et surtout, ce qui est important, et que je n'ai pas vu dans ton code, je choisis quelle occurrence du mot aura le lien.
     
  24. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    J'ai prévu ce contexte dans mon code ; à savoir que je n'ai pas donner toutes les options que l'ensemble du script permet.

    Je peux très bien ignorer un mot, une phrase, voire un paragraphe complet, etc.

    Mettre le lien sur telle occurence et pas une autre...
     
  25. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 833
    J'aime reçus:
    208
    Je m'en doute.

    En fait tu as énormément bossé pour faire le code.
    Moi j'ai fait un code BEAUCOUP plus léger, avec simplement la nécessité de mettre un flag pour chaque mot à lier, et donc si un jour je veux rajouter un mot imprévu, il faut que je fasse un rechercher - remplacer sur la source.
     
  26. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    Marie-Aude vs medium69 qui a le meilleur code :D
     
  27. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 833
    J'aime reçus:
    208
    medium69 sans aucun doute :)
     
  28. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    je ne donne pas le prix de l'élégance a médium pour ces quelques lignes que je verrais plutôt sous cette forme :

    Code:
    $mots_defin = '';
    foreach ($mots_texte as $mot) {
      if (mb_strlen($mot) >= 2 && preg_match('#[a-zA-Z]#U', $mot) && !preg_match('#[0-9]#U', $mot) ) {
        $mots_defin .= $mot.', '; 	
      }
    }
    
    l'élégance le petit plaisir caché du codeur ...
    Humour mis a part merci pour ce fil qui tombe a poins sur un sujet que je traite ce jour en partie grace a vous ;-)
     
  29. Hrock
    Hrock Nouveau WRInaute
    Inscrit:
    1 Janvier 2008
    Messages:
    4
    J'aime reçus:
    0
    Comment adapter cela à un forum phpbb2?

    En sachant que les messages sont dans une boucle, comment faire que le mot clé ne se change qu'une seul fois dans la page?

    Merci
     
  30. cedric_g
    cedric_g WRInaute accro
    Inscrit:
    18 Janvier 2006
    Messages:
    2 930
    J'aime reçus:
    2
    À la décharge de Medium69, le
    Code:
    for 
    est moins gourmand en ressources que le
    Code:
    foreach
    (à confirmer en PHP mais c'est vrai en VB.Net, C#, etc...)

    Moins élégant mais plus efficace :wink:

    Quoique avec un simple système de cache HTML (genre CacheLite) on s'en moque un peu :wink:
     
  31. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 003
    J'aime reçus:
    128
    J'ai une question relative à ce genre de traitements (si quelqu'un à une idée). Si dans ma liste de mots-clés j'ai quelque chose du genre :

    toto tata titi tutu

    toto tata

    titi tutu

    titi

    Comment être sûr de n'effectuer que les bons remplacements (c'est à dire n'affecter le lien destiné à la chaîne tit qu'à la chaîne stricte titi, et pas aux chaînes composées (comme toto tata titi tutu) qui peuvent avoir un lien différent associé ?

    Genre si je décide de remplacement avion à hélice par avion à hélice (spitfire) et avion par avion (boeing), comment être sûr que le remplacement de avion par boeing n'affectera pas les chaînes avion à hélice.

    (je sais pas si je suis très clair).
     
  32. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    Tu as tout a fait raison (voir lien trouvé ici il y a qques jours -http://m-fernandez.developpez.com/articles/php/bench/)

    ce genre d'optimisation de site s'entend bien sur avec du cache sinon c'est pas la fête au village quand tu as de la visite. Dans mon cas j'utilise un cache maison sous forme php (les blocs statiques pré-traités, son mis en cache sous forme html et le fichier de cache (extensions php) me permet des include de widgets dans les pages.)

    Je me pose la même question depuis hier car je viens de mettre en prod un truc qui utilise ce module de mon CMS qui n'était pas encore fini avant hier.
    Une solution (lourde en ressources donc a envisager au travers d'un cache) consiste a traiter les expressions par taille de la plus grande a la plus petite et en deux étapes.

    contexte du texte :

    'titi toto tutu titi'

    1ere passe
    - tu change titi toto en %%1%% (sachant que %%1%% correspond a titi toto)
    - tu change titi en %%2%% (sachant que ...)

    2éme passe
    - tu met en place le lien <a href ...>titi toto</a> sur les %%1%%
    - tu met en place le lien <a href ...>titi</a> sur les %%2%%

    la traduction intermédiaire permet l'élimination des doublons dans le liens.

    si j'ai bien compris tu voulais éviter :

    <a href ...><a href ...>titi</a> toto</a> tutu <a href ...>titi</a>
     
  33. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 003
    J'aime reçus:
    128
    Pas con du tout l'idée de "coder" en quelques sortes au fur et à mesure les chaînes dans le texte, afin d'éviter les multiples passes. Tu m'ôtes une sacré épine du pied là (déjà que j'ai passé des heures à résoudre des soucis de comparaison de chaînes du à des saletés de caractères Word qui parsèment le HTML --merci FCKEditor :-( ).

    Pour le coup je pense tenir un truc pas trop mal.

    1/ J'ai mis en place un CRON qui va chaque soir parser les différents contenus et les comparer à la liste des mots-clés du lexique, afin de remplir une table d'association entre les entrées du lexique et ma table de contenu.

    2/ Sur le front, je récupère les mots associés spécifiquement à la page en cours d'affichage, et je fais les remplacements uniquement sur les mots ramenés par ma requête, le tout allié à un système de cache pour éviter toute surcharge.

    Ce système doit prochainement être mis en place sur un site communautaire avec pas mal de passage, alors je verrais vite si le système tiens la charge ou non.
     
  34. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 021
    J'aime reçus:
    1
    Dans mon cas je ne gère pas (encore) le nombre de liens mis en place mais je me pose la question de savoir si ce nombre de liens identiques au seins d'une même page peut avoir un impact négatif et si oui lequel ?

    Un autre avantage de cette technique, pas mentionnée il me semble, réside dans la possibilité d'échanger des liens ciblés avec d'autre site autre part qu'en footer et dans un contexte adapté.
     
  35. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    je relance ce topic fort intéressant :

    tu as trouvé une solution pour ton problème de charge vampire ?

    et ta solution de coder et de décoder a fonctionné ?
     
  36. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 003
    J'aime reçus:
    128
    Ca semble tenir la charge sans souci avec le système mis en place, et au vu des nombreux tests que j'ai pu effectué ça marche plutôt bien (j'ai affiné mes regexp au fil des semaines, car j'avais oublié quelques cas épineux dans mes remplacements).

    Après le souci c'est que le client, qui avait appuyé avec insistance le développement de cette fonctionnalité ne l'utilise pas plus que ça (une constante dans le monde du dev web), car la liste des mots du glossaire n'a pas franchement évoluée depuis la mise en place du système.

    Concernant mes soucis de remplacements, je me suis donc basé sur l'idée de zeb, pour éviter de remplacer plusieurs fois la même chaîne, le tout suivi d'un traitement en regexp pour ne pas effectuer les remplacements dans certains cas (notamment dans le cas ou le mot en question est inclus dans un attribut html que je n'ai pas à modifier, comme src, href, alt, etc.).
     
  37. rudddy
    rudddy WRInaute passionné
    Inscrit:
    1 Août 2007
    Messages:
    2 125
    J'aime reçus:
    0
    ok ça a l'air intéressant, je me lance à l'aventure donc
     
  38. Zecat
    Zecat WRInaute accro
    Inscrit:
    1 Mars 2005
    Messages:
    9 119
    J'aime reçus:
    1
    Re:

    C'ets pour cela que je rappelais plus haut de traiter les chaine classées par longueur (les plus longues en premier ...)
     
  39. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 003
    J'aime reçus:
    128
    Oui oui mais si tu regardes les dates des posts et ma dernière intervention, tu verras que c'est cette idée que j'ai fini par appliquer, et ça marche bien.
     
Chargement...
Similar Threads - Transformer automatiquement mots Forum Date
Transformer une page pro en page personnelle Facebook 11 Novembre 2021
Impossible de transformer son profil en page ? Facebook 6 Octobre 2020
Transformer visiteur en client Demandes d'avis et de conseils sur vos sites 15 Novembre 2017
Comment transformer ce bout de code en fonction ? Développement d'un site Web ou d'une appli mobile 28 Mars 2017
transformer le lien du site au nom ... Administration d'un site Web 25 Janvier 2016
comment garder son compte personnel Facebook sans le transformer en page Facebook 27 Novembre 2015
Transformer un blog WP avec WooCommerce e-commerce 21 Août 2015
FB m'oblige à transformer mon profil en page Facebook 15 Octobre 2014
Comment transformer les accents dans les urls URL Rewriting et .htaccess 28 Août 2014
Facebook bloque et oblige à transformer les comptes privés en page ! Facebook 20 Août 2014
Transformer page G+ en Google Adresse Google+ 11 Mars 2014
Php transformer un email en image Développement d'un site Web ou d'une appli mobile 24 Janvier 2014
Transformer compte Google+ classique en page Google+ Google+ 10 Octobre 2013
transformer page amis en page fan Facebook 29 Août 2013
Comment transformer les accents par leur code grâce à .htaccess Netlinking, backlinks, liens et redirections 14 Mai 2013
Transformer un lien sortant normal en lien d'affiliation URL Rewriting et .htaccess 7 Mars 2013
Transformer un groupe d'annonce en campagne ? AdWords 28 Juillet 2012
Transformer son compte Adsense particulier en professionnel AdSense 1 Juin 2012
Comment transformer une page Fan en page Perso sur Facebook ? Facebook 3 Février 2012
Expression régulière MySql REGEXP pour transformer des liens Développement d'un site Web ou d'une appli mobile 26 Septembre 2011