limiter nombre de caractère d'une phrase

still

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
 

Steph82

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.
 

still

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] ]
 

jeroen

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:
 

Dr DLP

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