Coloration d'un mot clef dans un texte et coupure au premier espace

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Coloration d'un mot clef dans un texte et coupure au premier espace

Re: Coloration d'un mot clef dans un texte et coupure au premier espace

par @rthur » 04 avr. 2017, 09:04

Bonjour,

Si ton contenu n'est que du texte, un simple str_replace() devrait faire l'affaire pour la mise en gras non ?

Re: Coloration d'un mot clef dans un texte et coupure au premier espace

par yule » 03 avr. 2017, 19:27

Pour la coupure c'est bon... mais j'ai toujours pas trouvé pour la coloration

$nul = strlen($description);  
				
			// <!-- solution de secours si description vide -->
			if ($nul <=50)	
			{ 
	
					//$pos = stripos($texte, $keywordsy); // insensible à la casse, sinon strpos
						
						if ($pos === false) 
						{
							$decription = "$description";
						} 
						else 
						{
							$description = "$texte";
						}
					
					$texte = str_replace(array("\r\n", "\n", "\n\r"), ' ', $texte);

					$y = stripos($texte, $keywordsy);
					
						if ($y <= 320)
						{
							$r = substr($texte, 0, $y);
						}
						else
						{
			// <!-- Par la gauche -->
							$lim = -320;
							while (substr($texte, $y + $lim--, 1) !== ' ') // coupure sur le premier espace trouvé
								{
								continue;
								}
							
							$r  = substr($texte, $y + $lim + 2, abs($lim) - 2);
						}
 							$start = $y + strlen($keywordsy);
							
 						if (($start + 320) >= strlen($texte))
						{
							$r .= substr($texte, $y);
						}
						else
						{
    		// <!-- Par la droite -->
							$lim = 320;
							while (substr($texte, $start + $lim++, 1) !== ' ')
							{
								continue;
							}
								$r .= substr($texte, $y, --$lim + strlen($keywordsy));
						}
					$description ="$r";

						if (strlen($description) > $lim) 
						{ 
						$description = substr($description, 0, $lim); 
						$last_space = strrpos($description, " ");  
						$description = substr($description, 0, $last_space)."..."; 
	
						} 
			}

Coloration d'un mot clef dans un texte et coupure au premier espace

par yule » 03 avr. 2017, 16:03

Bonjour,

J'ai récupéré ce bout de code qui me permet d'afficher une description d'un gros texte par la gauche ou par la droite. Jusqu'ici, tout fonctionne. (enfin presque)

Je n'arrive pas à incorporer une colloration des mots clefs ($keywordsy), soit une mise en gras dès que le mots clefs est trouvé dans la description

Disons que si la recherche est "pomm" qu'il me mette en gras pour une telle description : "une pomme poser sur le pommeau de ma boite de vitesse etc..."

Après, la coupure de la description (à 320 caractères) ne se fait pas sur le premier espace trouvé à ~320 caractère mais directement au 320ème caractère, donc un mot est régulièrement coupé avant les .. pourtant il devrait non ?

<?php

	$nul = strlen($description);  
				
			// <!-- solution de secours si description vide -->
			if ($nul <=50)	
			{ 
	
					$pos = stripos($texte, $keywordsy); // insensible à la casse, sinon strpos
						
						if ($pos === false) 
						{
							$decription = "$description";
						} 
						else 
						{
							$description = "$texte";
						}
    
					$texte = str_replace(array("\r\n", "\n", "\n\r"), ' ', $texte);

					$y = stripos($texte, $keywordsy);
					
						if ($y <= 320)
						{
							$r = substr($texte, 0, $y);
						}
						else
						{
							
			// <!-- Par la gauche -->
							$lim = -320;
							while (substr($texte, $y + $lim--, 1) !== ' ') // coupure sur le premier espace trouvé
								{
								continue;
								}
							
							$r  = substr($texte, $y + $lim + 2, abs($lim) - 2);
						}
 							$start = $y + strlen($keywordsy);
							
 						if (($start + 320) >= strlen($texte))
						{
							$r .= substr($texte, $y);
						}
						else
						{
							
    		// <!-- Par la droite -->
							$lim = 320;
							while (substr($texte, $start + $lim++, 1) !== ' ')
							{
								continue;
							}
								$r .= substr($texte, $y, --$lim + strlen($keywordsy));
						}
					$description ="$r";
					$description ="$description ..";
			}

?>
Merci pour votre aide
Yule