Afficher les x premiers caracteres ?

Mammouth du PHP | 620 Messages

23 juin 2008, 14:10

bonjour,
je suis en train de mettre sur mon site internet un petit systeme de news.
j'enregistre mes news dans ma BDD titre, news, et date.

Concernant l'affichage des données je n'ai pas de pb c'est ok.

j'aimerai juste donnée un aperçu de la news sur ma page d'accueil et pour ça, je ferai affiché le titre et les xxx premiers caracteres de la news.

ma question est donc comment je peus faire pour ne faire afficher que les xxx premier caractaire de la news ?

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

23 juin 2008, 14:17

La fonction substr() est ton amie.

Par exemple:
$ma_chaine = "Substr(chaine, x, y) retourne le texte composé de y caractère à partir de la position x";
echo substr($ma_chaine, 0, 6); //affiche les 6 caractères à partir de la position 0 (début)
//Ce qui affiche : "Substr"
Modifié en dernier par sadeq le 23 juin 2008, 14:21, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Mammouth du PHP | 514 Messages

23 juin 2008, 14:21

Ca sera plus rapide en SQL, avec un LEFT()

Eléphant du PHP | 422 Messages

23 juin 2008, 15:16

Attention aux coupures à x caractères, parce que ça peut tomber au milieu d'un mot et donner des résultats bizarres : "Le président est un contribuable comme les autres" tronqué après le 23e caractère donnera un résultat avec un sens légèrement différent (je vous laisse découvrir).
Pour ma part, pour les news, j'utilise cette fonction pompée dans Smarty
function truncate($string, $length = 80, $etc = '...', $break_words = false) {
	if ($length == 0) return '';
	if (strlen($string) > $length) {
		$length -= strlen($etc);
		if (!$break_words) $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
		return substr($string, 0, $length).$etc;
	} else return $string;
}
Avec le paramètre break_word à faux, elle coupe la phrase au premier espace après le Xième caractère et en plus rajoute trois points pour montrer que la phrase est tronquée.