Couper une chaine de caractere trop longue

Résolu/Fermé
mazflo007 Messages postés 137 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 4 août 2015 - 23 sept. 2008 à 19:29
mazflo007 Messages postés 137 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 4 août 2015 - 23 sept. 2008 à 20:17
Bonjour,
J'ai une table contenant un champ description.
Et je souhaite afficher plusieurs descriptions mais en meme temps il faut qu'elle soit écourté.
Pour couper une chaine j'ai trouvé ce code très bien

function tronque($str, $nb = 150)
{
// Si le nombre de caractères présents dans la chaine est supérieur au nombre
// maximum, alors on découpe la chaine au nombre de caractères
if (strlen($str) > $nb)
{
$str = substr($str, 0, $nb);
$position_espace = strrpos($str, " "); //on récupère l'emplacement du dernier espace dans la chaine, pour ne pas découper un mot.
$texte = substr($str, 0, $position_espace); //on redécoupe à la fin du dernier mot
$str = $str."..."; //puis on rajoute des ...
}
return $str; //on retourne la variable modifiée
}

Le problème est que j'arrive pas a intégrer ce code dans une boucle
comme ceci

while ($data = mysql_fetch_array($reponse)) {

$str = $data['description'] ;
function tronque($str, $nb = 150)
{
// Si le nombre de caractères présents dans la chaine est supérieur au nombre
// maximum, alors on découpe la chaine au nombre de caractères
if (strlen($str) > $nb)
{
$str = substr($str, 0, $nb);
$position_espace = strrpos($str, " "); //on récupère l'emplacement du dernier espace dans la chaine, pour ne pas découper un mot.
$texte = substr($str, 0, $position_espace); //on redécoupe à la fin du dernier mot
$str = $str."..."; //puis on rajoute des ...
}
return $str; //on retourne la variable modifiée
}
echo ('Description : '$str' <br>')
}

Ce code m'affiche la première description mais n'est qui n'est pas écourté et me donne une erreur sur les autres
Pouvez-vous m'aider ? SVP
Merci d'avance de vos réponses.
A voir également:

2 réponses

BanBan55 Messages postés 361 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 31 octobre 2022 45
23 sept. 2008 à 20:11
<?php

$chaine = $data['description'] ;
$lg_max = 40; //nombre de caractère autoriser

if (strlen($chaine) > $lg_max)
{
$chaine = substr($chaine, 0, $lg_max);
$last_space = strrpos($chaine, " ");
$chaine = substr($chaine, 0, $last_space)."...";
}

echo $chaine;

?>

beaucoup plus simple je trouve
11
mazflo007 Messages postés 137 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 4 août 2015 3
23 sept. 2008 à 20:17
merci beaucoup
1