Votre question

couper un texte en php

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
28 Mai 2007 20:40:43

Salutation, voilà après de multiples recherche je m'en remets à vous.
j'ai une variable $texte que je chope de ma bdd. Je veux créer un chapeau pour ma news du style:

"Nouveau jeux vidéo très interessant à ne surtout pas manquer ... >>> lire la suite"

à partir du texte de la news qui est biensur beaucoup plus long. Comment je peux faire pour couper cette chaine de caractère à 250 caractères par exemple sans qu'il me coupe un mot en plein milieu.

Merci d'avance!

Autres pages sur : couper texte php

Contenus similaires
28 Mai 2007 21:37:40

bin j'ai eu beau essayer je n'ai pas trouver l'astuce avec wordwrap, tu peux m'en dire plus?
28 Mai 2007 21:38:27

kayner avec substr ca marche, certes mais le problème c'est que ca me coupe un mot en plein milieu
28 Mai 2007 21:38:36

quelqu'un peut me coder un exemple?
28 Mai 2007 21:52:08

chromatia, exagere pas, sur le lien que je t'ai donné c'est la doc avec 2 exemple, il te faut quoi de plus ?
28 Mai 2007 22:13:08

<?php

$sText = $texte;
$iMaxLength = 125;
$sMessage = "...";
function wordCut($sText, $iMaxLength, $sMessage)
{
if (strlen($sText) > $iMaxLength)
{
$sString = wordwrap($sText, ($iMaxLength-strlen($sMessage)), '[cut]', 1);
$asExplodedString = explode('[cut]', $sString);

echo $sCutText = $asExplodedString[0];

$sReturn = $sCutText.$sMessage;
}
else
{
$sReturn = $sText;
}

return $sReturn;
}
?>

J'ai mis ca, l'erreur est :

Fatal error: Cannot redeclare wordcut() (previously declared in /home.11/c/l/a/clantca/www/home.php:163) in /home.11/c/l/a/clantca/www/home.php on line 163
28 Mai 2007 22:26:19

biensur wordcut n'est déclaré nulle part ailleur
28 Mai 2007 22:31:03

et la ligne 163 ?
28 Mai 2007 22:33:50

c'est le wordcut() :

function wordCut($sText, $iMaxLength, $sMessage)
28 Mai 2007 22:34:50

mais tout ca est dans une boucle mysql logique puisque c'est un système de news, donc en théorie le wordcut() est définit dans la première boucle mais à la fin avant que la 2ième ne commence, l'autre est refermée donc le wordcut() n'est plus concidéré, ca reprend à 0, comme une boucle logique...
28 Mai 2007 22:35:50

j'ai ca:
<?php
include("dbdata.php");
//requete sql
$id_result = mysql_query ("SELECT * FROM `news` ORDER BY `id_news` DESC LIMIT 6",$id_connex) or die("mauvaise requete");
$num_result=mysql_num_rows($id_result);
while($tabnews = mysql_fetch_array($id_result,MYSQL_ASSOC))
{
$debcom=$tabnews['id_news'];
$res=mysql_query("SELECT * FROM commentaires WHERE id_news=$debcom");
$nb_news=mysql_num_rows($res);
$titre=stripslashes($tabnews["titre"]);
$texte=stripslashes($tabnews["texte"]);
?>

ici le tableau de ma news avec la fonction wordcut() etc (copier collé de plus haut) qui me ressort mon texte

<?
}
?>
et la fin de ma boucle
28 Mai 2007 22:39:45

oula, ne pas mettre la fonction dans la boule, la fonction doit etre à l'extérieur de la boucle, ensuite tu l'appel dans la boucle, ex :

function trucbidul() {


}

while {
trucbidul();
}
28 Mai 2007 22:40:32

phpdebutant.org > a droite les fonctions
28 Mai 2007 22:51:36

à présent:

en tout début de page j'ai définit :
<?php
/**
* function wordCut($sText, $iMaxLength, $sMessage)
*
* + cuts an wordt after $iMaxLength characters
*
* @param string $sText the text to cut
* @param integer $iMaxLength the text's maximum length
* @param string $sMessage piece of text which is added to the cut text, e.g. '...read more'
*
* @returns string
**/

function wordCut($sText, $iMaxLength, $sMessage)
{
if (strlen($sText) > $iMaxLength)
{
$sString = wordwrap($sText, ($iMaxLength-strlen($sMessage)), '[cut]', 1);
$asExplodedString = explode('[cut]', $sString);

echo $sCutText = $asExplodedString[0];

$sReturn = $sCutText.$sMessage;
}
else
{
$sReturn = $sText;
}

return $sReturn;
}
?>

au niveau de ma boucle j'ai ajouté:

$sText = $texte;
$iMaxLength = 10;
$sMessage = "...";

et dans ma boucle dans mon tableau news:

<? wordCut("$sText", "$iMaxLength", "$sMessage"); ?>

résultat:

j'ai un mot dans ma première news: Va
et 2 dans la deuxième: Est -

et rien d'autre
28 Mai 2007 22:59:09

J'ai réussi!
28 Mai 2007 23:00:21

Bon pour ceux que ca interesse au final:

En début de page j'ai définit la fonction:

<?php
/**
* function wordCut($sText, $iMaxLength, $sMessage)
*
* + cuts an wordt after $iMaxLength characters
*
* @param string $sText the text to cut
* @param integer $iMaxLength the text's maximum length
* @param string $sMessage piece of text which is added to the cut text, e.g. '...read more'
*
* @returns string
**/

function wordCut($sText, $iMaxLength, $sMessage)
{
if (strlen($sText) > $iMaxLength)
{
$sString = wordwrap($sText, ($iMaxLength-strlen($sMessage)), '[cut]', 1);
$asExplodedString = explode('[cut]', $sString);

echo $sCutText = $asExplodedString[0];

echo "".$sCutText."".$sMessage."";
}
else
{
echo "".$sText."";
}
}
?>

et dans ma boucle:

$sText = $texte;
$iMaxLength = 120;
$sMessage = "...";

<? wordCut("$sText", "$iMaxLength", "$sMessage"); ?> (à l'endroit ou je veux le texte dans ma news)

Merci Okinou
28 Mai 2007 23:04:00

de rien, c'est sympa de partager.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS