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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| <?php
// Nettoyage...
$keywords = htmlentities(htmlspecialchars($_GET['s'], ENT_COMPAT));
$keywords = trim(strip_tags($keywords));
$keywords = html_entity_decode($keywords);
$keywordUnclean = trim(preg_replace("/&#?[a-z0-9]+;/i",'',(strip_tags($keywords))));
$keywordClean = substr(preg_replace('/\s+/', ' ', $keywordUnclean), 0, 255);
// +---------- Transfo pour surlignage ---------------+
$keywords3 = explode(' ', $keywordClean);
// +---------- Le premier mot clef de plus de 4 lettres est gardé pour le positionner dans le texte ---------------+
$wordsy = array_filter(explode('+', $keywords), function($p) { return strlen($p) > 4; });
$keyword2 = reset($wordsy);
// +---Connexion à ma bd et tout le tralala ----- +
//..................................
// +------ Cherche les keywords qui sont présent dans le texte ----------- +
$pos = stripos($texte, $keyword2); // insensible à la casse, sinon strpos
if ($pos === false) {
$decription = "$description";
} else {
$description = "$texte";
}
$texte = str_replace(array("\r\n", "\n", "\n\r"), ' ', $texte);
$i = stripos($texte, $keyword2);
if ($i <= 320)
{
$r = substr($texte, 0, $i);
}
else
{
// par la gauche
$lim = -320;
while (substr($texte, $i + $lim--, 1) !== ' ') // coupure sur le premier espace trouvé
{
continue;
}
$r = substr($texte, $i + $lim + 2, abs($lim) - 2);
}
$start = $i + strlen($keyword2);
if (($start + 320) >= strlen($texte))
{
$r .= substr($texte, $i);
}
else
{
// par la droite
$lim = 320;
while (substr($texte, $start + $lim++, 1) !== ' ')
{
continue;
}
$r .= substr($texte, $i, --$lim + strlen($keyword2));
}
$description ="$r";
// +-------------- je prépare pour la mise en gras -----------+
$motif='`\b(('.implode('|',$keywords3).')s?)\b`si';
$sortie='<span class="highlight_word">$1</span>';
$sortie2='<span class="highlight_word2">$1</span>'; // question de couleur par rapport à $sortie
$texte = preg_replace($motif,$sortie,$texte);
$nomsite = preg_replace($motif,$sortie2,$nomsite);
$description = preg_replace($motif,$sortie,$description);
?> |
Partager