8792 sujets

Développement web côté serveur, CMS

Bonjour tout le monde, je vient vous voir avec une petite question, surement simple mais je en trouve pas la réponse sur le web malgres mes recherche ...

Voila, sur mon site web, j'ai mit en place un systeme de news.. Jusque la ca va Smiley smile Mais j'aimerais pouvoir faire en sorte de masquer une partie du texte. Je voudrais en effet que l'internaute qui arrive sur mes page puisse parcourir les news accompagner d'un tout petit descriptif et qu'il puisse cliquer sur la news de son choix pour en gros "lire la suite". J'ai penser à plusieurs facon de faire mais aucunne n'est vraiment concrète... Dans le lien je pense mettre l'ID de ma news ( dans le lien "lire la suite" ), je suis presque sur de moi pour ca mais comment couper le texte ? J'ajoute que dans mon script de news, je me suis fait une page d'administrateur. Je passe donc par un formulaire pour l'envoi de mes news sur mon site. Je voudrai donc que quand je tape ma news elle soit entiere, comme à l'habitude mais que quand elle est envoyer sur mon site elle soit couper... Voila j'espere avoir ete assez clair.. Merci a tous Smiley smile
Tu peux aussi le faire directement dans la requête avec LEFT() ou SUBSTRING()
Si non, en php, tu as strlen() et substr() qui sont tes amies, de même que strpos() d'ailleurs. Smiley cligne
Merci de vos réponse, je part etudier ces fonctions ( nouvelle pour moi ).
Merci beaucoup Smiley smile je repost pour vous tenir au courant Smiley cligne
Une petite suggestion en passant :

Avec la fonction split(), on peut conserver les mots entiers, cette fonction scinde une chaîne en un tableau, grâce à une expression rationnelle.


function extractNWords($article,$nbWords=10)
{
   $tab = split(" ",$article); // les mots sont séparés par des espaces

   // Limiter le nombre de mots, pour ne pas dépasser la taille du tableau
   $nbWords = $nbWords < count($tab)) ? $nbWords : count($tab);

   $result="";
   for ($i=0; $i < $nbWords $i++)
        $result .= $tab[$i] . " "; // Le mot est ajouté, ainsi qu'un espace.

   $result .= "(...)"; // points de suspension entre parenthèses
   return $result;
}


Voilà.
Modifié par GeorgesM (06 Nov 2006 - 11:41)
... ce qui donne :

Un test pour raccour (pas bon)
Un test pour raccour... (pas bon)
Un test pour... (bon)

a écrit :
Mauvaise suggestion, lente, lourde... en fait, totalement inutile. cligne


... suggestion ayant tout de même le mérite d'élargir le débat en proposant une orientation par nombre de mots à la place d'un nombre de lettres. Smiley fache
Modifié par GeorgesM (06 Nov 2006 - 12:38)
GeorgesM a écrit :
... suggestion ayant tout de même le mérite d'élargir le débat en proposant une orientation par nombre de mots à la place d'un nombre de lettres. Smiley fache

Si tu t'étais donné la peine de descendre dans le bas de la page donnée en lien, tu aurais trouver une méthode quasi identique à celle que tu as citée mais sans regex (avec explode) suivie par une 3ème manière de faire en travaillant avec les fonctionnalités des array()

Il y a sans doute des dizaines de manières de le faire.

$texte='Raccourcir cette phrase pour n\'avoir que les dix
premiers mots suivi par 3 points pour faire un résumé'; 
echo implode(' ', array_slice(explode(' ', $texte), 0, 10)),'...';

...ce qui donne:

Raccourcir cette phrase pour n'avoir que les dix premiers mots suivi...

soit 11 mots. Smiley biggol


$texte='Raccourcir cette phrase pour n\'avoir que les dix
premiers mots suivi par 3 points pour faire un résumé'; 
echo implode(' ', array_slice(explode(' ', $texte), 0, 9)),'...';


donne :
Raccourcir cette phrase pour n'avoir que les dix premiers mots...

soit 10 mots. Smiley ravi

Mais c'est incontestablement mieux que ce que j'avais proposé...
Modifié par GeorgesM (06 Nov 2006 - 13:43)