[php] couper un texte lors de l'affichage
12 messages
• Page 1 sur 1
- Clori
- Nouveau WRInaute

- Messages: 3
- Inscription: 3 Mar 2010
[php] couper un texte lors de l'affichage
Bonjour,
je souhaiterai n'afficher qu'une partie de mon texte issu d'une bdd. J'ai trouvé les fonction wordwrap, mais cela ne convient pas et je n'arrive pas à l'appliquer.
Dans l'idéal ce serait de pouvoir couper à 300 mots sans césure au milieu d'un terme.
merci de votre aide.
je souhaiterai n'afficher qu'une partie de mon texte issu d'une bdd. J'ai trouvé les fonction wordwrap, mais cela ne convient pas et je n'arrive pas à l'appliquer.
Dans l'idéal ce serait de pouvoir couper à 300 mots sans césure au milieu d'un terme.
- Code: Tout sélectionner
<?php
$sql = ' SELECT * FROM bio WHERE statut=1 ORDER BY bio.date DESC LIMIT 4 ' ;
// on envoie la requete
$req = query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
{
$urlfriendly= strtolower(strtr($data['nickGB'], "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ ", "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn-"));
// on affiche les informations de l'enregistrement en cours
echo '<tr><td width=\"60\"><img src="images/avatars/'.$data['image'].'.jpg" width="35" height="35" alt="'.$data['nickFR'].'"></td><td><a href="bio.php?id='.$data['id'].'&bio='.$urlfriendly.'">'.$data['nickFR'].'</a> - modifiée le : '.$data['date'].' </td></tr><tr><td></td><td>'.$data['shortdesc'].'</td></tr>';
}
?>
merci de votre aide.
-

blman - WRInaute accro

- Messages: 3077
- Inscription: 5 Sep 2003
Re: [php] couper un texte lors de l'affichage
Alors je verrais bien un truc du style :
et on appelle :
- Code: Tout sélectionner
function shortdesc($chaine){
$newChaine=explode(" ",$chaine);
$shortDesc='';
$c=0;
while(isset($newChaine[$c])){
if(strlen($shortDesc." ".$newChaine[$c])<=300){
$shortDesc=$shortDesc." ".$newChaine[$c];
}
else break;
$c++;
}
return $shortDesc;
}
et on appelle :
- Code: Tout sélectionner
$data['shortdesc']=shortdesc($data['tontexteacouper']);
-

blman - WRInaute accro

- Messages: 3077
- Inscription: 5 Sep 2003
Re: [php] couper un texte lors de l'affichage
Ah ok, tu a déjà une description courte dans ta bdd
Et j'avais mal lu ton truc, vu que ma fonction doit coupé à 300 caractères et pas à 300 mots, donc, ça serait plutôt un truc du style :
Bon après, y'a surement mieux comme solution, moi je code à l'arrache là...
- Code: Tout sélectionner
$data['shortdesc']=shortdesc($data['shortdesc']);
Et j'avais mal lu ton truc, vu que ma fonction doit coupé à 300 caractères et pas à 300 mots, donc, ça serait plutôt un truc du style :
- Code: Tout sélectionner
function shortdesc($chaine){
$newChaine=explode(" ",$chaine);
$shortDesc='';
$c=0;
while(isset($newChaine[$c]) && $c<300){
$shortDesc=$shortDesc." ".$newChaine[$c];
$c++;
}
return $shortDesc;
}
Bon après, y'a surement mieux comme solution, moi je code à l'arrache là...
-

forty - WRInaute passionné

- Messages: 1701
- Inscription: 30 Oct 2008
Re: [php] couper un texte lors de l'affichage
j'ai ca a te proposer : http://www.phpsources.org/scripts348-PHP.htm
-

abouvard - WRInaute impliqué

- Messages: 517
- Inscription: 17 Aoû 2004
Re: [php] couper un texte lors de l'affichage
Hello :
Moi j'utilise ça :
EDIT : ah pardon, je n'avais pas vu ton besoin de césure à 300 mots et non 300 caractères
Moi j'utilise ça :
- Code: Tout sélectionner
$txt = strip_tags($data['shortdesc']);
$lg_max = 300; //nombre de caractères
if (strlen($txt) > $lg_max)
{
$txt = substr($txt, 0, $lg_max);
$last_space = strrpos($txt, " ");
$txt= substr($txt, 0, $last_space)."...";
}
EDIT : ah pardon, je n'avais pas vu ton besoin de césure à 300 mots et non 300 caractères
-

Mountain Magazin - WRInaute impliqué

- Messages: 598
- Inscription: 1 Oct 2004
Re: [php] couper un texte lors de l'affichage
Voici la fonction que tu cherches :
Elle est écrite sur une ligne.
En premier paramètre, tu passe le texte à traiter, et en second le nombre de caractères où tu veux tronquer.
La fonction te rajoute trois petits points à la fin de ta chaine (etc), mais tu peux mettre ce que tu veux, par exemple un lien lire la suite, auquel cas tu peux ajouter un troisième paramètre à la fonction.
- Code: Tout sélectionner
function Tronquer_Texte ( $texte, $nbchar ) {
return (strlen($texte) > $nbchar ? substr(substr($texte,0,$nbchar),0,strrpos(substr($texte,0,$nbchar)," "))."..." : $texte);
}
Elle est écrite sur une ligne.
En premier paramètre, tu passe le texte à traiter, et en second le nombre de caractères où tu veux tronquer.
La fonction te rajoute trois petits points à la fin de ta chaine (etc), mais tu peux mettre ce que tu veux, par exemple un lien lire la suite, auquel cas tu peux ajouter un troisième paramètre à la fonction.
-

milkiway - WRInaute accro

- Messages: 4910
- Inscription: 3 Fév 2004
Re: [php] couper un texte lors de l'affichage
Amusant j'ai le meme code et pourtant je l'ai fait moi même... !
Pour tronquer en nombre de mots, utilise explode()
- Code: Tout sélectionner
// TRONQUER TEXTE
function Tronquer_Texte($texte, $longeur_max)
{
if (strlen($texte) > $longeur_max)
{
$texte = substr($texte, 0, $longeur_max);
$dernier_espace = strrpos($texte," ");
$texte = substr($texte, 0, $dernier_espace)."...";
}
return $texte;
}
Pour tronquer en nombre de mots, utilise explode()
-

Mountain Magazin - WRInaute impliqué

- Messages: 598
- Inscription: 1 Oct 2004
Re: [php] couper un texte lors de l'affichage
Le code que j'utilise n'est pas de moi, j'ai du le modifier un peu (je sais plus), ce qui explique peut être certaines similitudes. Peut être que tu t'es inspiré de codes existants, il y en a des tas pour faire ça.
En tout cas c'est ce que j'ai trouvé de mieux pour gérer le tronquage d'un texte proprement.
En tout cas c'est ce que j'ai trouvé de mieux pour gérer le tronquage d'un texte proprement.
-

stopher - Nouveau WRInaute

- Messages: 16
- Inscription: 10 Mar 2010
Re: [php] couper un texte lors de l'affichage
Salut ,
voici une alternative si ça vous intéresse :
Good luck ,
Ch.
voici une alternative si ça vous intéresse :
- Code: Tout sélectionner
//la chaine de plus de 300 mots
$machaine ="bonjour a tous bla bla bla .. ";
//on la coupe au niveau des espace , on recupére dans un tableau
$tmots = explode(' ',$machaine);
//ou coupe notre tableau afin de n'avoir que 300 valeurs
$tnewChaine = array_slice($tmots, 0, 300);
//on recolle la chaine
$newChaine = implode( ' ',$newChaine);
Good luck ,
Ch.
12 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- PHP et MagpieRSS, couper une chaine de caractères
- [PHP] Couper un code html en pages, et préserver les balises
- Changer affichage.php?id=14 en affichage/mot-14.html
- couper fichier sql ...
- Couper une chaine de caractères
- Couper un texte après un espace
- pb affichage image en php
- affichage d un script php
- Problème affichage requete PHP
- Affichage de bbcode de js vers php
- Google Labs lance Google Alternate Views - 09-10-2007
- Afficher le PageRank en entier dans Firefox (barre d'outils Google) - 16-01-2008
- Sortie officielle de GoogleStats v2.0 ! - 23-02-2003
- Nouvelle version de notre FAQ - 04-05-2002
- Lancement de Mozbot - 27-06-2005
- Sites bénéficiant de plusieurs liens supplémentaires (SiteLinks) dans les résultats Google - 21-05-2006
- Blogger Pro devient gratuit - 13-09-2003
- Articles de R et D sur le PageRank, le SpamRank et le spam... - 09-12-2005
Qui est en ligne
Utilisateurs parcourant ce forum: Google [Bot] et 0 invités

