Coloration d'un mot clef dans un texte et coupure au premier espace
Posté : 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 ?
Yule
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 aideYule