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