Posez votre question Signaler

Couper une chaine de caractere trop longue [Résolu]

mazflo007 131Messages postés 16 mai 2008Date d'inscription 6 mars 2012Dernière intervention - Dernière réponse le 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.
Lire la suite 

Couper une chaine de caractere trop longue »

2 réponses
Réponse
+6
moins plus
<?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
Ajouter un commentaire
Réponse
+0
moins plus
merci beaucoup
Ajouter un commentaire
Ce document intitulé « Couper une chaine de caractere trop longue » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?