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 :

Coloration d'un mot clé bloqué par des caractères fantaisistes


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 Coloration d'un mot clé bloqué par des caractères fantaisistes
    Bonjour,

    J'utilise ce snippet qui fonctionne parfaitement, enfin presque car celui-ci bloque dès qu'un mot clé est suivi par un *

    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
    <?php
    //$keywordsy   = "domaine rumantsch";
    //$keywordsy   = "doma* rumantsch";
    $keywordsy   = "doma italiano";
    $texte = "Google recherche images maps play youtube actualités gmail drive plus » historique web | paramètres | connexion × surfez encore plus vite installer google chrome suisse recherche avancée outils linguistiques le domaine google.ch est disponible en : deutsch english italiano rumantsch solutions publicitaires solutions deutsch english italiano rumantsch solutions domaines publicitaires";
     
    // +------ Fonction pour supprimer les keywords de 3 lettres et moins  -------+
     
    function RemoveLess($String,$Char=3) 
    		{
    			$StringArray=explode (" ",$String);
    				foreach ($StringArray as &$Word) 
    				{
    					if (mb_strlen($Word,"UTF-8")>$Char)
    					{ 
    						$Str.=$Word." ";
    					}
    				}
    			return trim($Str);
    		}
     
    // +------ Fonction pour rechercher les keywords dans le texte et les afficher selon une position  + coloration -------+	
     
    	function get_snippet($keywordsy, $texte) {
    		$snippet='';
    		$span = 130;
    		$strlen_max = 400;
     
    		$keywordsy = RemoveLess($keywordsy); // appel de la 1ère fonction
    		$keywordsy =  trim(preg_replace("#( [[:alnum:]]{1,3} )#Ui", " ", " ".$keywordsy." ")); // ajout d'un espace avant et		
     
    		$words = join('|', explode(' ', preg_quote($keywordsy)));
     
    		preg_match_all("#(\W.{0,$span}\W)($words)(\W.{0,$span}\W)#iu", "  $texte  ", $matches);
     
    		//$s = '\s\x00-/:-@\[-`{-~'; //character set for start/end of words
    		//preg_match_all('#(?<=['.$s.']).{1,130}(('.$words.').{1,130})+(?=['.$s.'])#uis', $texte, $matches);
     
    		foreach($matches[0] as $match) {
    		if (!$match = trim($match)) continue;
    		if (isset($snippet)) $snippet .= "$match.. "; else $snippet = "...$match...";
    		if (strlen($snippet.htmlspecialchars($match[0], 'UTF-8').".. ") > $strlen_max) break;
    		}
    		$snippet = preg_replace("#($words)#iu", '<b>$1</b>', $snippet);
    		return $snippet;
      		}
     
    	// <!-- Appel de la fonction snippet -->
    		$description = get_snippet($keywordsy, $texte);	
     
    		echo $description;
    ?>
    M'affiche bien ceci :

    installer google chrome suisse recherche avancée outils linguistiques le domaine google.ch est disponible en : deutsch english italiano rumantsch solutions publicitaires solutions deutsch english italiano rumantsch solutions domaines publicitaires..
    Par contre dès que j'ai un caractère comme ceci "doma* rumantsch" il colore pas doma

    google chrome suisse recherche avancée outils linguistiques le domaine google.ch est disponible en : deutsch english italiano rumantsch solutions publicitaires solutions deutsch english italiano rumantsch solutions domaines publicitaires..
    Ma keyword doit être mal nettoyé ou une fonction est incomplète ?

    ok je peux faire ça ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $keywordsy = str_replace("*","",$keywordsy);
    Mais je vais pas le faire pour tous les caractères qui me bloque

    Merci pour votre aide
    Yule

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Ce que tu obtiens est tout à fait normal. Informatiquement parlant * est un caractère comme les autres. Ce n'est que l'utilisation programmée que l'on en fait qui fait que * est considéré comme un joker.
    Donc doma* ne "matche" pas avec domaine et ta solution de supprimer le * par rien n'est pas mal. Mais il se peut que quelqu'un veuille vraiment chercher un "mot" avec un *.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

Discussions similaires

  1. Masquer le mot de passe par des "**"?
    Par nouna10 dans le forum C++
    Réponses: 3
    Dernier message: 19/04/2012, 09h35
  2. Mon PC Semble bloqué par des spywares
    Par gwenagan dans le forum Sécurité
    Réponses: 11
    Dernier message: 27/09/2007, 18h39
  3. Réponses: 3
    Dernier message: 19/04/2007, 07h55
  4. [HTML] Masquer champ mot de passe par des astérisques
    Par Jiraiya42 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/11/2006, 00h31
  5. [XSLT] Remplacer par des caractères spéciaux
    Par OXyGN dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 29/07/2005, 17h30

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