[PHP] Limiter le nombre de mots

digival Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, mon script provenant de ce topic ne marche pas :
https://www.webmaster-hub.com/topic/27383-limiter-le-nombre-de-caractere-du-resultat-dune-requete/


<?php 
$retour = mysql_query('SELECT * FROM actualitees ORDER BY id DESC LIMIT 0,1') or die( mysql_error() );
$actu = mysql_fetch_array($retour) or die( mysql_error() );
?>

<?php
$nbCaracteres = 50;
if( strlen($actu) > $nbCaracteres ) 
{
 $extrait_actu = ereg_replace("(.{".$nbCaracteres."})( .*)$","\\1 ...", $actu);
}
else 
{
 $extrait_actu = $actu;
}
?>

<div id="actualites" >
<h3> <?php echo (html_entity_decode(stripslashes($extrait_actu['titre']))); ?> </h3> 
<p> <?php echo nl2br(html_entity_decode(stripslashes($extrait_actu['contenu']))); ?> </p>
</div>


Où est le problème svp ?

8 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Tu veux limiter le nombre de mots ou de caractères ?
1
vlmath Messages postés 794 Date d'inscription   Statut Contributeur Dernière intervention   160
 
Salut,

Ce code à l'air de limiter le nombre de caractères.

Au lieu d'utiliser la fonction ereg_replace, utilise plutôt la fonction qui sert à prendre des portions de strings :

$extrait_actu =  substr($actu, 0, $nbCaracteres);


Manuel complet : https://www.php.net/manual/fr/function.substr.php

@Bientôt et bonne prog
1
digival Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci beaucoup de vos réponses, mais je n'y arrive toujours pas...
(honte à moi :s)

Voici mon script:

<?php
$nbCaracteres = 5000;
if( strlen($actu) > $nbCaracteres ) 
{
 $extrait_actu = substr($actu, 0, $nbCaracteres);
}
else 
{
 $extrait_actu = $actu;
}
?>

<div id="actualites" >
<h3> <?php echo (html_entity_decode(stripslashes($extrait_actu['titre']))); ?> </h3> 
<p> <?php echo nl2br(html_entity_decode(stripslashes($extrait_actu['contenu']))); ?> </p>
</div>


P.S:Je préfère limiter le nombre de caractères
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
$actu est un array ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
D'abord tu ne peux pas faire un substr dessus !
Il faut que tu le fasses sur chacune de ses entrées.
0
digival Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   1
 
Désolé mais j'y arrive toujours pas :s

Mon nouveau script:

<?php 
$retour = mysql_query('SELECT * FROM actualitees ORDER BY id DESC LIMIT 0,1') or die( mysql_error() );
$actu = mysql_fetch_array($retour) or die( mysql_error() );
?>

<?php
$nbCaracteres = 5000;
if( strlen($actu['contenu']) > $nbCaracteres ) 
{
 $extrait_actu['contenu'] = substr($actu['contenu'], 0, $nbCaracteres);
}
else 
{
 $extrait_actu['contenu'] = $actu['contenu'];
}
?>

<div id="actualites" >
<h3> <?php echo (html_entity_decode(stripslashes($actu['titre']))); ?> </h3> 
<p> <?php echo nl2br(html_entity_decode(stripslashes($extrait_actu['contenu']))); ?> </p>
</div>


P.S: Je veux juste effectuer la limite sur le contenu et non le titre
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Qu'est-ce qui ne fonctionne pas ?
Tu ne vois rien du tout ?
Ou le texte n'est pas coupé ?
Essaye en déclarant l'array avant la condition
$extrait_actu = array();
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Si tu veux limiter le nombre de mots, utilises la fonction explode.
-1
digival Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   1
 
oui
-1