recherche d'une fonction

Répondre
savageman
le 06/12/2003 à 14:30
savageman
Bonjour, je recherche une fonction.

En fait en PHP 5 la fonction que je cherche existe, c'est str_split, mais je ne dispose aps de cette fct en php4... Si on pouvait avoir le code de cette fonction, ce serait encore le mieux.

Cette fonction me permetrait de separer une chaine qui fait en moyenne une douzaine de caracteres tous les 2 caracteres et les stocker dans un tableau. Comme je ne dispose pas de PHP5 chez mon hebergeur:

J'ai pensé a un wordwrap suivi d'un preg_split mais j'aime aps trop cette solution trop lente, sinon ya bien substr, mais c'est une fonction lente aussi je crois.

Bref, je ne sais que choisir. Merci de pouvoir m'aider
LA GLOBULE
le 06/12/2003 à 14:37
LA GLOBULE
Pour ceux qui ne connaissent pas cette fontion, regarder la sur le manuel.

Sinon, pour faire ce truc sous PHP 4, il n'y a pas vraiment de grosses difficultées.
En effet, en php, une chaine de caracteres est deja considerée comme un tableau.

Par exemple, si $chaine ="toto";
Et bien, un echo $chaine{0} affichera le premier "t" de toto.
echo $chaine{1} affichera le "o".

Et ainsi de suite.

A partir de là, ca ne doit pas etre bien dur de creer cette fonction en php (utilisation de la remarque precedente, un petit str_len et un petit for devrait suffir. Pas besoin de regex pour ca).
savageman
le 06/12/2003 à 14:48
savageman
J'ai fait ca:

$temp = $user["status"];
$user["status"] = Array();
$strlen = (strlen($temp)-1);

for ($i = 0; $i <= $strlen; $i++)
{
if ($i%2==0)
{
$user["status"][$i/2] = $temp{$i}.$temp{$i+1};
}
}

Y a t'il des ameliorations a faire? (la chaine a traiter est dans $user["status"] et la chaine traitée est au meme endroit :p )
Merci
LA GLOBULE
le 06/12/2003 à 14:52
LA GLOBULE
Tu l'as testé ?

Si oui, comment elle se comporte ?
(ton code est peut etre bon. Mais je ne pourrais pas t'en dire plus vu que je ne me suis pas penche sur le probleme. Mais si tu veux, je le ferais et je la mettrais dans les astuces).
savageman
le 06/12/2003 à 15:02
savageman
Heu, oauis je veux bien que tu regarde, sinon ma fonction fait exactement ce que je veux.
Ex si ma chaine est "f1f2n1n2c1c2", ca me retourne
Array ( [0] => f1 [1] => f2 [2] => n1 [3] => n2 [4] => c1 [5] => c2 )

Donc tout va bien ^^ Tu peut la mettre en astuce effectivement ca pourait aider d'autre personneq ui veulent remlacer le str_split et qui n'ont pas php5. merci
LA GLOBULE
le 06/12/2003 à 22:51
LA GLOBULE
<?php
function str_split2 ($chaine, $nb=1) {
$longueur = strlen($chaine);
$k=0;
$i = 0;
$tableau = array();
while ($i < $longueur) {
for ($j=0; $j < $nb; $j++) {
$tableau[$k] .= $chaine{$i+$j};
}
$i = $i + $nb;
$k++;
}
return $tableau;
}

$str = "Salut Dave";

$arr1 = str_split2($str);
$arr2 = str_split2($str, 3);

print_r($arr1);
print_r($arr2);
?>


Cette fonction a le meme comportement que celle du manuel (j'ai utilisé les memes exmples, et j'ai le meme résultat).
savageman
le 07/12/2003 à 14:11
savageman
Ouah!! Merci, bien joué La globule!!
L'astuce de la double boucle, j'y avait pas pensé!
Dis dnc, il peut meme nous reprogrammer PHP la globule! Trop Fort ^^!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours