[PHP] pb de explode

pb de explode [PHP] - PHP - Programmation

Marsh Posté le 04-07-2003 à 19:52:29    

je comprends pas pkoi ca marche pas ca:
 
$tab=explode("*",$text);
 
if (count($tab!=1))
{
$text="";
echo $tab;
echo $tab[1]."  ".$tab[2];
for ($i=0;$i<=(count($tab)-3);$i+2)
{
$temp=$tab[$i]."<font class=sujetstitrefont color=blue>*".$tab[$i+1]."*</font>";
$text=$plus.$temp;
}
$text=$text.$tab[count($tab)-1];
}
else
{
$text=$tab;  
}

Reply

Marsh Posté le 04-07-2003 à 19:52:29   

Reply

Marsh Posté le 04-07-2003 à 19:57:23    

Bon alors, plusieurs remarques :
* count($tab!=1) ça t'assure pas que $tab=2. Il peut très bien valoir 0, auquel cas, bam, plantage pour $tab[1], $tab[2], etc...
* montre donc ce que vaut $text au tout début du code, ça aidera peut-être
* la fin, $text=$tab, ne veut rien dire. $tab est un tableau alors que si j'ai bien tout suivi $text est censé être une chaîne.
 
Bref, c'est le bordel.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 04-07-2003 à 20:12:05    

G enlevé le else il servait à rien.
Le but est d'écrire en bleu ce kil y a entre deux * dans un text, par exemple: *coucou* donne *coucou*
 
Deux ptites questions qui pourraient me faire avancer:
*Est-ce ke mon for est bien écrit?
*Ke renvoie explode si $text ne contient pas "*"?
 
$tab=explode("*",$text);
 
if ($tab[0]!=$text)
{
$text="";
for ($i=0;$i<=(count($tab)-3);$i+2)
{
$temp=$tab[$i]."<font class=sujetstitrefont color=blue>*".$tab[$i+1]."*</font>";
$text=$plus.$temp;
}
$text=$text.$tab[count($tab)-1];
}


Message édité par goldorak69 le 04-07-2003 à 20:13:03
Reply

Marsh Posté le 04-07-2003 à 20:27:20    

Voici mes conseils :
* Comme le dit la doc PHP ( http://www.php.net/manual/fr/function.explode.php ),

Citation :

Si separator contient une valeur qui n'est pas contenue dans string, alors explode() retournera un tableau, contenant la chaîne string entière.


Donc $tab[0] sera égal à $text.
* Maintenant, perso je ne me baserais pas sur explode() mais plutôt substr(). Tu fais substr($text, 0, 1) qui te donne le premier caractère. Tu testes si c'est un *. Idem pour le dernier caractère avec substr($text, strlen($text)-1, 1). Si les 2 sont égaux à "*" et que strlen($text)>2 (histoire que t'aies pas une chaîne composée uniquement de 2 astérisques), alors tu peux faire $val=substr($text,1,strlen($text)-2). Là-dessus, plus besoin de for ou autre, tu fais direct un echo "<font class=sujetstitrefont color=blue>*$val*</font>";
Et c'est fini.
 
* Evite le style SMS dans les posts, c'est rarement très bien apprécié ;)


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed