[PHP] Limiter le nombre de mots

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

  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
    1. 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
  2. D'abord tu ne peux pas faire un substr dessus !
    Il faut que tu le fasses sur chacune de ses entrées.
    0
    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
      1. Si tu veux limiter le nombre de mots, utilises la fonction explode.
        -1
        1. Contributeur
          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
          1. Tu veux limiter le nombre de mots ou de caractères ?
            1