Lentreprenaute Posté 28 Février 2004 Posté 28 Février 2004 Hello, je comprends pas l'exemple ci-dessous me retourne bien 2 $toto="cadoc cadoc"; $nb_ligne=substr_count($toto, "cadoc"); $toto=$letexte; $nb_ligne=substr_count($toto, "cadoc"); me retourne 0 $nb_ligne=substr_count($letexte, "cadoc"); me retourne 0 extrait de $letexte, j'ai plusieurs cadoc comme ci-dessous! <td> Cadoc </td> qui sont bien dans le texte! Florent, qui ne chome pas!
Anonymus Posté 28 Février 2004 Posté 28 Février 2004 Bonjour, tout d'abord : Entre cadoc et Cadoc, il y a une différence. La majuscule. Et... Oh, surprise, substr_count est sensible à la casse, autrement dit, il fait la différence entre les majsucules et les minuscules. Une solution peut consister en l'emploi de strtolower, qui convertit le texte en minuscule. Tu convertit, puis tu comptes. $nb_ligne=substr_count($letexte, "cadoc"); me retourne 0 ? $nb_ligne=substr_count(strtolower($letexte), "cadoc"); me retourne 2 Attention : La fonction substr_count (hormis les majuscules/minuscules), comptes les occurences trouvées, meme à l'intérieur d'un mot. print substr_count("Ceci est un test","es"); // retourne 2 print substr_count("Ceci Est un test","es"); // retourne 1 print substr_count(strtolower("Ceci Est un test"),"es"); // retourne 2 Sinon, il reste les expressions régulières : Je te laisse faire les essais => if (ereg("(es)","es est Est test tEst",$reg)){ foreach($reg as $k => $v){ echo"<br>".$v; } echo "<p>reg = ".$reg; echo "<p>nb de reg = ".count($reg); } Anonymus.
Lentreprenaute Posté 29 Février 2004 Auteur Posté 29 Février 2004 Bonjour anonymus, j'ai laissé tomber la méthode du cadoc avec substr_count, et j'ai utilisé split & count, sinon j'ai pas super bien compris ton exemple du dessus, tu en penses quoi de mon bo code, sinon une question bete mais si c'etait faisable ce serait top! par defaut je compte le nombre de ligne & de tableau present dans la var $letexte, et je fais une moyenne pour definir une valeur , penses tu qu'il soit possible, de compter isolement les lignes des tables pour renvoyer une hauteur differente à chacun en fonction de leur nombres de lignes respectives? Florent // compte les tableaux $x_table=split("table class=\"general", $letexte); $nb_tableau = count($x_table); // compte les lignes des tableaux $x_ligne=split("tr class=\"row_", $letexte); $nb_ligne = count($x_ligne); // hauteur des lignes des tableaux $nb_ligne *= 30; // calcul la hauteur d'un tableau en fonction du nombre de lignes/tableaux $t_height=$nb_ligne; if($nb_tableau > 0){$t_height/=$nb_tableau;} $t_height=round($t_height); $t_height.="px";
Anonymus Posté 29 Février 2004 Posté 29 Février 2004 1/ C'est apparemment bon, sinon que... Si ton fichier a un seul tableau appelé table class=\"general, et un autre, appelé table class=\"caporal, ton nombre de lignes dans tr class=\"row ne correspondra pas forcément à ce que tu veux compter. Autrement dit, tu pourrais compter des lignes qui ne seraient pas des lignes du tableau que tu désires compter. 2/ Dans les lignes : $nb_ligne = count($x_ligne); // hauteur des lignes des tableaux $nb_ligne *= 30; // calcul la hauteur d'un tableau en fonction du nombre de lignes/tableaux $t_height=$nb_ligne; if($nb_tableau > 0){$t_height/=$nb_tableau;} tu peux réduire en if($nb_tableau > 0){(30*count($x_ligne))/=$nb_tableau;} mais c'est toi qui voit 3/ Si tu as 5 mn, essaie ce programme, toutes les lignes renvoient le meme résultat : $txt="les Es estait essat es";$pattern="es"; echo"---------------<br>"; print substr_count(strtolower($txt), $pattern); echo"<br>---------------<br>"; $x_table=split($pattern, $txt); $nb_tableau = count($x_table); echo $nb_tableau; echo"<br>---------------<br>"; $nb_tableau = count(split($pattern, $txt)); echo $nb_tableau; echo"<br>---------------<br>"; 4/ Que dire de plus ? Que la commande split renvoie toujours au moins "1" (sauf en cas d'erreurs, mais là, ca plante tout ), et que donc la valeur $nb_tableau sera toujours >0. Exemple : $txt="";$mask=" "; $nb_tableau = count(split($mask, $txt)); echo"<p>nb tableau=".$nb_tableau; C'est pareil pour $t_height; Voilà, Anonymus.
Anonymus Posté 29 Février 2004 Posté 29 Février 2004 Au fait : 1/ Si la commande 'round' arrondit à l'entier le plus près, la commande 'ceil' arrondit à l'entier supérieur, ce qui devrait plus te satisfaire. 2/ Imagines les variables suivantes : $txt="tabl sqkfjm";$masque1="tabl";$masque2="tr"; Tu te retrouves avec le cas suivant // ( le meme que le tien : )$nb_tableau = count(split($masque1, $txt));if(($nb_tableau>0)){ $t_height=ceil(count(split($masque2, $txt))*30 / $nb_tableau)." px"; }else{ $t_height="0 px"; }echo "<br>nb_tableau : ".$nb_tableau;echo"<br>-height = $t_height";echo"<br>-----------------------<br>";echo"<br> cas n° 2 <br>";$nb_tableau = count(split($masque1, $txt)) - 1;if(($nb_tableau>0)){ $t_height=ceil(count(split($masque2, $txt))*30 / $nb_tableau)." px"; }else{ $t_height="0 px"; }echo "<br>nb_tableau : ".$nb_tableau;echo"<br>-height = ".$t_height; Maintenant, modifies les valeurs des variables : $txt="abl tr sqkfjm";$masque1="tabl";$masque2="tr"; tu essaie avec $txt = "sfdq"; puis avec $txt = " tr "; etc, tu verras que ca change beaucoup de choses Mais au fait, es tu sûr de ce que tu veux compter ? Si le premier tableau possede 10 lignes, et ensuite, tu as 10 tableaux de 1 ligne, est tu sûr que ton programme adaptera la hauteur des lignes comme tu le souhaite ? Voilà.
Lentreprenaute Posté 29 Février 2004 Auteur Posté 29 Février 2004 Mais au fait, es tu sûr de ce que tu veux compter ? Si le premier tableau possede 10 lignes, et ensuite, tu as 10 tableaux de 1 ligne, est tu sûr que ton programme adaptera la hauteur des lignes comme tu le souhaite ? salut anonymus, Va falloir que je me concentre sur tout ces bouts de codes, j'adore la ligne qui reduit tout "if($nb_tableau > 0){(30*count($x_ligne))/=$nb_tableau;}" sinn tu souleves le probleme question que je posais en postant mon code! je fais une moyenne sur les tableau/ lignes et a ton avis, est ce que l'on peut compter les tableaux , compter les lignes et leur assigner une hauteur qui soient en fonction du nombres de lignes pour chaque? ma var $letexte renvoie du html avec donc des tableaux class général & avec des tr row_X (0 ou 1 ou 2). J'attends avec impatience ton retour Et un grand merci pour ton aide, Florent
Anonymus Posté 29 Février 2004 Posté 29 Février 2004 Va falloir que je me concentre sur tout ces bouts de codes, j'adore la ligne qui reduit tout "if($nb_tableau > 0){(30*count($x_ligne))/=$nb_tableau;}" je fais une moyenne sur les tableau/ lignes et a ton avis, est ce que l'on peut compter les tableaux , compter les lignes et leur assigner une hauteur qui soient en fonction du nombres de lignes pour chaque? Tu peux très bien imaginer un $t_height en forme de tableau : $t_height[numero_tableau], et ensuite, la sortie sera de la forme : echo"<br>-height[".$numero_tableau."] = ".$t_height; bon courage Pour le '1', ca parait abscond, mais c'est une question d'habitude. Si tu réduis constamment, tu finira par le lire facilement. Le tout est de ne pas se tromper Pour le '2' : Honnetement, c'est "casse gueule". Je préfèrerais séparer les tableaux, mais alors il faut gérer les 'piles', et c'est plus délicat. D'une manière générale, tout dépend des tableaux que tu as au départ, et de ce que tu veux sortir à l'arrivée. Si tu mélanges des tableaux de fruits et légumes, c'est pas génant, mais si tu mélanges des tableaux de légumes avec les cours de la bourse, ca rime plus à rien à l'arrivée Tu peux très bien imaginer un $t_height[numero_tableau], et en sortie tu auras : echo"<br>-height_".$numero_tableau." = ".$t_height['numero_tableau']; (un truc comme ca) Bon courage
Lentreprenaute Posté 1 Mars 2004 Auteur Posté 1 Mars 2004 salut anonymous, la , je ne vois pas, du tout comment faire? Tu peux très bien imaginer un $t_height[numero_tableau], et en sortie tu auras :echo"<br>-height_".$numero_tableau." = ".$t_height['numero_tableau']; Florent
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant