begin process at 2012 05 31 03:25:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

limiter la taille d'un texte


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

limiter la taille d'un texte

vendredi 14 mars 2008 à 16:05:35 | limiter la taille d'un texte

joebuz

Membre Club


Bonjour,
pour un moteur de recherche, je cherche à couper le texte environ 5 mots avant et apres le mot recherché.

pour rechercher un mot ou une expression dans un texte, j'utilise :

$search = la recherche client
$resume = le texte dans lequel la recherce se fait

$mots = explode(' ', $search);
  foreach($mots as $mot) {
   $replace2='<font color=#33ccff><b>'.$mot.'</b></font>';
   $resume2 = str_replace($mot,$replace2,$resume);
}

Ceci me permet de changer la couleur des mots recherché ($search) dans le texte ($resume)
le probleme est que le texte est tres long et que j'ai pas envie de tout renvoyer, juste une ligne avec le mot recherché serait suffisant.

Ex d'affichage souhaité :

....blabla bla bla bla bla blabla blablblabla bla bn la labl blablb ....


merci

vendredi 14 mars 2008 à 17:19:45 | Re : limiter la taille d'un texte

joebuz

Membre Club


ya bien la fonction substr()

$echo_resume = substr($resume, 0, 25);
$combien =strlen($resume);
if($combien <= 25){
$affich = " ".$echo_resume."<br>";}
else{
$affich = " ".$echo_resume."...<br>";}

echo $affich;

mais le probleme c'est que ça coupe uniquement le texte à un endroit precis et non à un endroit variable, il faudrait pouvoir appliquer la fonction substr($resume, 5, -5); par exemple ou 5 et -5 sont definis à partir de $mot !
mais ça je sais pas faire !!!

vendredi 14 mars 2008 à 17:59:53 | Re : limiter la taille d'un texte

neigedhiver

Salut,

Cherche du côté des expressions régulières :
- http://fr.php.net/pcre
- http://lumadis.be/regex/tuto_pcre.php

Je suis sûûûûr que tu y trouveras ton bonheur.

Allez, t'as de la chance, j'adore les PCRE :

preg_match_all(sprintf('`(\b(?:\w+\s){0,5}%s(?:\s\w+){0,5}\b)`', $mot_a_trouver), $chaine_ou_chercher, $matches);

Logiquement, ça le fait, si je ne me suis pas planté en recopiant ici...
Pour l'explication de comment pourquoi, je te renvoies sur le tuto donné en lien ci-dessus.


Neige
samedi 15 mars 2008 à 10:53:55 | Re : limiter la taille d'un texte

joebuz

Membre Club


j'ai essayé ça (pour essai):

preg_match_all(sprintf('`(\b(?:\w+\s){0,5}%s(?:\s\w+){0,5}\b)`', $search), $descriptif, $matches);

echo $matches[0][0]."<br>".$matches[0][1]."<br>".$matches[0][2]."<br>".$matches[0][3]."<br>";

ça me renvoie bien le mot cherché $search dans le texte $descriptif, mais uniquement le mot cherché et pas le texte qui entoure ce mot.
De plus ça ne fonctionne pas avec une recherche avec plusieurs mots ex : $search = 'afficher texte'

samedi 15 mars 2008 à 11:09:38 | Re : limiter la taille d'un texte

joebuz

Membre Club


Pardon, autant pour moi ça fonctionne bien !!!

Par contre, ça ne prends pas en compte les accents et la ponctuation

samedi 15 mars 2008 à 14:53:35 | Re : limiter la taille d'un texte

joebuz

Membre Club


... et le probleme c'est que ça coupe à la moindre ponctuation ou accents, j'ai lu les tutos (pas tout compris), et je ne vois pas comment faire pour prendre en compte au moins les accents pour avoir les motes en entier ! et avec la ponctuation ça serait le top !!!

samedi 15 mars 2008 à 18:30:05 | Re : limiter la taille d'un texte

neigedhiver

Réponse acceptée !
Salut,

Essaie ce motif : `(\b(?:[^\s]+\s){0,5}le(?:\s[^\s]+){0,5}\b)`

Remis dans le code que je t'avais donné, ça donne ça :

preg_match_all(sprintf('`(\b(?:[^\s]+\s){0,5}%s(?:\s[^\s]+){0,5}\b)`', $mot_a_trouver), $chaine_ou_chercher, $matches);

\w est un caractère de mot : a priori, il ne prend pas en compte la ponctuation. Je l'ai donc remplacé par [^\s] qui accepte tous les caractères sauf les caractères d'espacement (espace, tab, etc).
Et avec l'option de recherche i, la recherche n'est pas sensible à la casse :

preg_match_all(sprintf('`(\b(?:[^\s]+\s){0,5}%s(?:\s[^\s]+){0,5}\b)`i', $mot_a_trouver), $chaine_ou_chercher, $matches);


Neige
samedi 15 mars 2008 à 20:37:41 | Re : limiter la taille d'un texte

joebuz

Membre Club

Impeccable, Merci !!!!!!!!!!!!



Cette discussion est classée dans : texte, mot, mots, bla, recherché


Répondre à ce message

Sujets en rapport avec ce message

Help : (str_replace) et (split ou explode) ne marchent pas ! ? [ par slmnsnts ] Salut tt le monde !G ajouté une page de recherche dans mon forum et ca marche tres bien ... le seul prob C lorsque qu'on cherche des mots avec plusieu Question pour les pros... [ par okaneganai ] bonjour Messieurs-Dames. je vous explique mon problème. J'ai créé un dictionnaire en ligne de japonais (http://www.dictionnaire-japonais.fr) et j'ai Censurer des mots dans sa page [ par tony4758 ] Bonjour je suis un débutant dans le langage php et je cherche depuis longtemps un script a mettre dans ma page permettant de transformer les mots gros code perso: balises spéciales [ par Samiby ] Bonjour,Je programme actuellement un blog, et pour poster des lessages, j'ai créé un code personnalisé.J'ai un prblème avec les images.La syntaxe de m faire une recherche par mot clé dans un texte [ par maurimaure ] Bonjour, J'ai des docs en registrés dans ma BDD,  j'aimerais faire des récherches par mots clés sur ces docs enfin de n'en afficher que les docs qu recherche de texte [ par RM50Man ] Bonjour , comment faire pour rechercher du texte par exemple:je veux rechercher un mot qui commence par Aselect * from table where mot = 'A*'On fait c Mots [ par kenny18 ] Salut,J'ai cherché un peu partout sans vraiment trouver ce qu'il me faut ou alors j'ai loupé la coche..!Je recherche comment faire pour extraire une s Fichier texte vers BDD SQL [ par vl92 ] Bonjour,J'ai un fichier texte (.txt) avec une liste de plus de 300 mots, sans balise, avec un mot par ligne.Je voudrais insérer chacun des 300 mots da Remplacer un mot par un lien mais pas si le mot est dans un lien [ par allergie ] Bonjour, je bute depuis ce matin sur un problème bête. Je remplace la première occurence d'un mot s'il correspond au titre d'une liste dans une base Parser une chaine [ par TiotBour ] Bonjour,J'ai un fichier log, qui enregistrer un à un des actions, dans le genre : (From User1) texte bla bla bla (From Toto) ah ah ah (From Julie) Hu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales