N'afficher qu'un nombre limité de mots...

N'afficher qu'un nombre limité de mots... - PHP - Programmation

Marsh Posté le 07-04-2005 à 17:57:53    

bonjour,
 
je suis confronté à la problématique suivante :
 
j'ai une page avec un edito (modifiable dynamiquement via un formulaire DANS un fichier txt).
j'aimerai que dans la page d'accueil, n'apparaissent ques les 100 premiers (mots par
exemple) de l'edito.
 
Pouvez vous me donner des pistes ?
quelles fonctions utilisées ?
 
merci
Francois

Reply

Marsh Posté le 07-04-2005 à 17:57:53   

Reply

Marsh Posté le 07-04-2005 à 22:44:22    

Tu comptes les espaces. Au 100eme espace, tu y es arrivé.
 
http://fr2.php.net/manual/fr/ref.strings.php tout est là

Reply

Marsh Posté le 08-04-2005 à 10:52:13    

Effectivement y a tout, mais j'ai pas trouvé de fonction pour les espaces à part trim...
 
mais, en cherchant un peu, j'ai trouvé cela sur phpinfo.net pour ceux que ça interesse.
 
Une petite fonction simple mais fort pratique, pour afficher un résumé de 20 mots par exemple :

Code :
  1. <?
  2. function resume_xmots($MaChaine,$xmots) 
  3.    $ChaineTab=explode(" ",$MaChaine); 
  4.    for($i=0;$i<$xmots;$i++) 
  5.    { 
  6.       $NouvelleChaine.=" "."$ChaineTab[$i]"; 
  7.    }
  8.    return $NouvelleChaine; 
  9. }
  10. ?>


 
 

Code :
  1. <?
  2. echo resume_xmots($MaChaine,20) ;
  3. ?>


 
Je vais essayé ça..


Message édité par foxcssfox le 08-04-2005 à 10:55:56
Reply

Marsh Posté le 08-04-2005 à 11:34:27    

Pas mieux :)
 
A part que tu pourrais l'améliorer un peu en faisant un trim sur ton retour ( pour enlever l'espace de début), et un count de ton tableau que tu compares à ton $xmots afin de rajouter "..." si ton tableau est plus grand que le nombre de mots désirés.... et puis vérifier que le nombre de mots demandé est plus PETIT que le nombre de mots du tableau ;)
 
@+

Reply

Marsh Posté le 08-04-2005 à 15:12:51    

Disons que le problème de ce système, c'est des cas comme

Citation :


Bonjour ! Comment allez-vous aujourd'hui ? Moi, ça va !


 
Y a une petite erreur entre le nombre de mots véritables et le retour (les signes ? et ! sont pris pour des mots, allez-vous n'en fait qu'un) bref, c'est simple à défaut d'être efficace :)


Message édité par naceroth le 08-04-2005 à 15:13:02
Reply

Marsh Posté le 17-01-2006 à 20:07:25    

bonjour,
 
J'ai un soucis car j'utilise ce code mais sous easy php 1.8 il y a cette erreur :
Notice: Undefined variable: NouvelleChaine in c:\program files\easyphp1-8\www\mastermind_janvier2006\all_news_messages_pub.php on line 72
 
comment reparer !!!
Merci

Reply

Marsh Posté le 17-01-2006 à 20:23:52    

up

Reply

Marsh Posté le 17-01-2006 à 21:01:08    

avant la boucle for, tu ajoutes la ligne
$NouvelleChaine = "";

Reply

Marsh Posté le 17-01-2006 à 21:28:27    

utiliser preg_match avec le pattern de recherche suivant : #(?:\w+\W+){n-1}\w+#s
en modifiant n-1 par la valeur qui te convient : 99 si tu veux 100 mots.
 
Si la fonction preg_match renvoie FALSE ... ce la veut dire que ton texte comporte moins de n mots ... tu pourras donc l'afficher entier.
 

Code :
  1. if (preg_match('#(?:\w+\W+){99}\w+#s' , $texte , $out)
  2. {
  3. echo $out[0];
  4. }
  5. else
  6. {
  7. echo $texte;
  8. }

Reply

Marsh Posté le 17-01-2006 à 21:39:53    

euh, pourquoi pas tout simplement un substr ?
 
Bon, ça matche pas le nombre de mot, mais de toute façon il est plus logique de délimiter en fonction d'un nombre de caractères plutôt qu'un nombre de mot...
 
Par exemple :

Code :
  1. $resume =  substr($montext,0,300) // pour les 300 premiers caractères
  2. $resumt .= '... <a href="blabla">Lire la suite</a>';


 
Je trouve ça plus simple et plus logique non ?


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 17-01-2006 à 21:39:53   

Reply

Marsh Posté le 17-01-2006 à 21:40:51    

en tout cas merci de votre reponse
:)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed