Limiter le nombre de caractere d'un titre

Eléphant du PHP | 52 Messages

25 mars 2009, 18:54

Bonjour,

j'ai essayé de couper un titre avec ce bout de code, mais ca marche pas.
<?php
define('CONF_ONLY','1');
include('config.php');

@ $db = mysql_pconnect(DB_HOST,DB_USER,DB_PASS);
if(!$db) { echo 'Erreur de connexion'; exit; }

mysql_select_db(DB_DBASE);
$query =
' SELECT post_titre,post_titre_url,post_chapo,post_content,cat_id
FROM '.DB_PREFIX.'post
ORDER BY post_id DESC LIMIT 1';

$result = mysql_query($query);
$num_results = mysql_num_rows($result);

echo '<ul id=divune>';
for($i = 0 ; $i < $num_results ; $i++)
{
  $row = mysql_fetch_array($result);
  $date = explode(' ',$row['post_dt']);
  $date_slash = str_replace('-',' ',$date[0]);

$titre = '<li class="viole"><a href="/thematiques/index.php?'.$date_slash.''
  .$row['post_id'].''.$row['post_titre_url'].'" title="'
  .$row['post_titre'].'" class="BIGG"> '.$row['post_titre'].' </a></li>';

$titre_court = $titre ; 
$lg_max = 40; //nombre de caractères autorisés

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

echo $titre_court; 

}
echo '</ul>';
?>
Merci pour vos réponses.

moon
Modifié en dernier par nemrod le 26 mars 2009, 16:59, modifié 1 fois.

Eléphant du PHP | 141 Messages

25 mars 2009, 19:09

Il t'affiche quoi ?

Eléphant du PHP | 52 Messages

25 mars 2009, 19:10

il n'affiche que la puce <li>

En plus, il est lourd... on dirait que le code tarde à calculer :?

Eléphant du PHP | 141 Messages

25 mars 2009, 19:58

Il compte les 40 premiers caractères de la chaine, ce qui donne :
$titrecourt = '<li class="viole"><a href="/thematiques/';
Ensuite tu cherches le dernier espace et tu coupes là, donc au final tu obtiens :
$titrecourt = '<li class="viole"><a';
Je te conseille de compter le nombre de caractère de ton post_id et de le soustraire à ta longueur max.
Ensuite tu coupe ton post_titre en fonction de cette nouvelle longueur...

Eléphant du PHP | 52 Messages

26 mars 2009, 07:41

Merci Julian pour ta réponse,

Effectivement, j'avais remarqué que la coupe se fesait au niveau de la balise <a href... mais je ne sais pas vraiment comment faire pour afficher l'integralité du titre pour ensuite le couper ... :roll:

Eléphant du PHP | 254 Messages

26 mars 2009, 08:31

Pourquoi vouloir absolument traiter ta chaine de caractère avec tout le html dedans ? Pourquoi ne pas traiter uniquement le contenu de $row['post_titre'] ?

Eléphant du PHP | 141 Messages

26 mars 2009, 09:34

Je te conseille de compter le nombre de caractère de ton post_id et de le soustraire à ta longueur max.
Ensuite tu coupe ton post_titre en fonction de cette nouvelle longueur...
:-*

Eléphant du PHP | 52 Messages

26 mars 2009, 16:58

Ouiiiii! c'est reglé ... Merci furiouslol et surtout Julian pour votre aide, effectivement, la solution etait juste là devant mes yeux ... peut etre que c'est la fatigue :?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]