limiter nombre de caractère d'une phrase

Nouveau WRInaute
hello, je voudrais faire apparaître via une base de donnée tous les titres de mes articles de journaux.
pour cela j'indique ce code:
<?
$db = mysql_connect("base", "login", "pass");
mysql_select_db("login",$db); $sql = "SELECT * FROM journal where id=1";
$req = mysql_query($sql) or die("Erreur SQL !<br>".$sql."<br>".mysql_error());
while($data = mysql_fetch_array($req))
{

echo "$data[titre1]<br />$data[titre2]";
}
mysql_close();
?>

jusque là aucun problème MAIS je souhaiterai limiter le nombre de caractère de chaque titre. a partir de 30 caractères, cela se couper et indiquer 3 ...


comment faire?
merci
;-)
still
 
Nouveau WRInaute
Un ptit strlen sur chaque titre pour savoir si c'est supérieur à 30 caractères, si non, c'est bon, si oui tu utilises les fonctions d'expression regulieres pour prendre les 30 premiers caractères.
 
Nouveau WRInaute
oui voilà j'ai mis ce code.
si quelqu'un qui passse par ici veut la solution ;-))

Code:
<? 
$db = mysql_connect("base", "login", "pass"); 
mysql_select_db("login",$db); $sql = "SELECT * FROM journal where id=1"; 
$req = mysql_query($sql) or die("Erreur SQL !<br>".$sql."<br>".mysql_error()); 
while($data = mysql_fetch_array($req)) 
{ 

$titre = $data["titre1"];
if(strlen($titre)>=30){ $titre = substr($titre,0,26)."..."; }
echo "$titre";
echo "<br />";
$titre = $data["titre2"];
if(strlen($titre)>=30){ $titre = substr($titre,0,26)."..."; }
echo "$titre";

} 
mysql_close(); 
?>


merci a tous

[mahé : n'hésitez pas a utiliser les baliser [code ] [ /code] ]
 
WRInaute passionné
Un détail ...
C'est sympa ton code, mais si la phrase fait pile 30 caractères, tu va couper les 4 derniers pour afficher 3 points ... :wink:
 
WRInaute impliqué
jeroen a dit:
Un détail ...
C'est sympa ton code, mais si la phrase fait pile 30 caractères, tu va couper les 4 derniers pour afficher 3 points ... :wink:
Il faudrait utiliser wordwrap().
Moi je ferai comme ça:

Code:
if(strlen($titre)>=30)
{ 
$titre = wordwrap($titre,35, "boulgou"); // Ajoute boulgou au niveau de la césure à faire
$titre = strstr($titre,"boulgou"); // Ne conserve la phrase que jusqu'à la première césure
$titre = str_replace("boulgou","....",$titre); // Remplace biulgou par les petits points
}

Ou en illisible :
Code:
$titre = (strlen($titre)>=30) ? str_replace("boulgou","....",strstr(wordwrap($titre,40, "boulgou"),"boulgou"))  : $titre;
 
Discussions similaires
Haut