Page 1 sur 1

afficher un extrait d'une chaine , x mots avant et après le mot spécifié

Posté : 14 mars 2017, 19:29
par LittleFairy2
Bonjour à tous,

Je développe un petit moteur de recherche pour mon site, et j'ai un souci pour afficher les résultats :
pour ne pas mettre l'intégralité du texte dans lequel l'expression a été trouvée, je souhaiterai afficher l'expression recherchée en gras et quelques mots avant et après, mais pas tout le texte.
exemple :
texte original : "j'aime le php mais j'en fais des cauchemars quand ça ne marche pas"
si je recherche le mot "cauchemars", je souhaiterai obtenir :
"... fais des cauchemars quand..."

j'ai trouvé cette fonction :

Code : Tout sélectionner

function substr_words($textecourt, $count = 4) { $words = explode(' ', $textecourt, ($count + 1)); if ( count($words) > $count ) { array_pop($words); return implode(' ', $words).'...'; } }
mais elle fonctionne à partir du début de la phrase...
pourriez-vous m'aider ?

je vous remercie beaucoup !!!

Re: afficher un extrait d'une chaine , x mots avant et après le mot spécifié

Posté : 14 mars 2017, 20:30
par LittleFairy2
Hello !
j'ai trouvé la solution, je la met pour qui serait intéressé :

Code : Tout sélectionner

require_once('Connections/client.php'); $resultat1=$client->query("SELECT SUBSTR(nom_champ, INSTR(nom_champ, 'occurrence' ) -20, CHAR_LENGTH( 'occurrence' ) +30 ) AS resultat FROM table WHERE nom_champ LIKE '%occurrence%'"); // $news=$resultat1->fetch_assoc(); while($news=$resultat1->fetch_assoc()) { $tab = explode(" ", $news['resultat']); //on decoupe le résultat et le stock dans un tableau $tab = array_splice($tab, 1); //on enlève le premier mot $tab = array_splice($tab, 0,sizeof($tab)-1); //on enléve le dernier mot echo "...".implode(" ", $tab)."..."; //on retranscrit le tableau dans une chaine }
Bonne soirée !!