couper un texte en php
Forum Programmation : couper un texte en php
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!
oui ou http://fr3.php.net/manual/fr/function.substr.php
selon ton utilistaion
bin j'ai eu beau essayer je n'ai pas trouver l'astuce avec wordwrap, tu peux m'en dire plus?
kayner avec substr ca marche, certes mais le problème c'est que ca me coupe un mot en plein milieu
quelqu'un peut me coder un exemple?
chromatia, exagere pas, sur le lien que je t'ai donné c'est la doc avec 2 exemple, il te faut quoi de plus ?
<?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
biensur wordcut n'est déclaré nulle part ailleur
et la ligne 163 ?
c'est le wordcut() :
function wordCut($sText, $iMaxLength, $sMessage)
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...
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
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();
}
phpdebutant.org > a droite les fonctions
à 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
J'ai réussi!
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
de rien, c'est sympa de partager.
Il y a 1975 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

okinou