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 :

Surligner que des mots de plus de 3 caractères [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut Surligner que des mots de plus de 3 caractères
    Hello,

    Je viens de remarquer un point gênant dans mes résultats

    la fonction fonctionne très bien, il prend bien en compte les keywordsy de 3 caractère au minimum, par contre ça coince au niveau de la surbrillance, il prends en compte tous les caractères et j'aimerais aussi qu'il surbrille dès 4 caractères

    [php]$keywords ="a vendu une moto";[/php]

    barcelone moto rent - location scooter sauter la navigation accueil tarifs 50cc 125cc (offre spéciale jusqu’au 31 décembre) 250cc prix + de 400cc... prix réservation contact services services/livraison bon plan questions / réponse partenaires share location de scooter a barcelone barcelona moto...

    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
    function snippet_max($texte, $keywordsy, $strlen_max) {
     
    		//$keywordsy =  str_replace('  ',' ',preg_replace("# [[:alnum:]]{1,3}[\.,;:]? #",  "", str_replace(' ','  ',$keywordsy)));
     
    		while(preg_match("# ([[:alnum:]]{1,3}) #", $keywordsy))
    		$keywordsy =  preg_replace("#( [[:alnum:]]{1,3} )#", " ", $keywordsy);
     
    		$words = join('|', explode(' ', preg_quote($keywordsy)));
     
    		//lookahead/behind assertions ensures cut between words
    		$s = '\s\x00-/:-@\[-`{-~'; //character set for start/end of words
    		preg_match_all('#(?<=['.$s.']).{1,100}(('.$words.').{1,100})+(?=['.$s.'])#uis', $texte, $matches, PREG_SET_ORDER);
     
    		$result = "";
    		foreach($matches as $line) {
    		if (strlen($result.htmlspecialchars($line[0], 0, 'UTF-8')."... ") > $strlen_max) break;
    		$result .= htmlspecialchars($line[0], 0, 'UTF-8')."... ";
    		}
    		//highlight
    		$result = preg_replace('#'.$words.'#iu', "<span class=\"highlight_word\">\$0</span>", $result);
    		return $result;
    		}
    $description = snippet_max($texte, $keywordsy, 400);
    Merci pour votre aide
    Yule

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	while(preg_match("# ([[:alnum:]]{1,3}) #", $keywordsy))
    		$keywordsy =  trim(preg_replace("#( [[:alnum:]]{1,3} )#", " ", " ".$keywordsy." ")); // ajout d'un espace avant et après
    N.B. La ligne while(...) ne sert à rien.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		$keywordsy =  trim(preg_replace("#( [[:alnum:]]{1,3} )#Ui", " ", " ".$keywordsy." ")); // ajout d'un espace avant et après

  3. #3
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut
    Extra c'est parfait merci !
    Yule

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

Discussions similaires

  1. [XL-2002] Top 10 des mots les plus fréquent dans une colonne de mots
    Par _gege_ dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/07/2010, 23h20
  2. Réponses: 0
    Dernier message: 27/12/2008, 23h49
  3. Réponses: 6
    Dernier message: 19/10/2008, 07h56
  4. extraction des mots à partir dune chaine de caractères
    Par khaledklaud dans le forum Langage
    Réponses: 2
    Dernier message: 30/09/2008, 16h13
  5. [Tableaux] Extraire des mots d'une chaine de caractères
    Par pratiquement dans le forum Langage
    Réponses: 5
    Dernier message: 24/01/2008, 09h20

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