Générer Liste de caractères

Fermé
Gothelein - 25 janv. 2017 à 14:53
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 26 janv. 2017 à 14:37
Bonjour,

Je souhaiterais générer une liste, qui ce remplit automatiquement et en boucle.

En gros (par exemple) lorsque j'arrive sur ka page 1 j'ai a-z, sur la page 2 aa-za, sur la page 3 ab-zb, etc..., et ce a l'infini, tant que j'ouvre une page, ma liste se génère.

Le top serait également de pouvoir choisir les souhaité caractères (a-z 0-9 A-Z & € # = etc...)

Merci pour votre aide.


A voir également:

2 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
25 janv. 2017 à 16:40
Bonjour,

Tu peux parcourir toutes les lettres de cette façon :
$alphabet = "abcdefgh...ABCDEFGH...(-è_...";
$lettres = str_split($alphabet);
foreach ($lettres as $lettre)
{
    echo $lettre;
}


Ensuite, il te faut une formule mathématique pour déterminer, en fonction du numéro de la page, combien de lettres tu as, et à quelle lettre tu en es. Par exemple, pour la page 3, ton "b" de "ab-zb" se retrouve en disant $lettre = $alphabet[3 - 2];
Attention, il faut gérer la page 1 à part.

Du coup, pour lister toutes les pages, sur un alphabet classique, avec au maximum 27 pages, on peut avoir :
$page = $_GET["page"];
$alphabet = "abcdefghijklmnopqrstuvwxyz";

$suffixe = "";
if ($page > 1 && $page < strlen($alphabet) + 2)
    $suffixe = $alphabet[$page - 2];

$lettres = str_split($alphabet);
foreach ($lettres as $lettre)
{
    echo $lettre . $suffixe . "<br />";
}

Et on ne sait pas trop ce que tu veux obtenir pour les pages supérieures à la taille de l'alphabet. Si tu explicites je peux t'aider, mais sinon tu dois pouvoir trouver tout seul ;)

Xavier
0
En fait je veux juste que le script génère des suites de caractères, de 1 caractères (page 1) a 10000000000000000000000 caractères (page 11111111111111111111111111111111111111111....)

Après c'est juste pour m'entraîner un peut, je ne sais pas encore quoi en faire, mais je saiq qu'il faut que sur la page s'affiche les suites de caractère, et que quand on a atteint Z, on doit générer un deuxième caractère dans la chaîne, puis une foi qu'on est a ZZ, on ajoute u' troisième, etc
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011 > Gothelein
26 janv. 2017 à 10:36
En fait, ce que tu veux, c'est convertir des nombres en base N, avec N égal à la taille de ton alphabet (et écrire ces nombres à l'envers, mais passons)
Est-ce que tu te sens de chercher et implémenter un tel algorithme (puisque tu dis vouloir t'entraîner, faut pas qu'on te fasse tout !) ?
0
Gothelein > Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
26 janv. 2017 à 10:39
C'est pas que ca me dérangerait, mais je suis pas pro en php, je connais les base, et quelques méthodes un peut poussées mais la j'ai rien trouvé sur gogole, a part un script, mais que fesais 1800 lignes est était complètement buggé...
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
26 janv. 2017 à 14:37
Du coup, tu dois pouvoir faire un truc comme ça : (attention, je n'ai pas de serveur php sous la main, j'écris sans filet)

Le principe, c'est, pour la page n° P, de calculer le suffixe commun à tous les codes de la page ; et ensuite, d'itérer sur tout l'alphabet pour afficher les différents codes.
Cette partie commune est, mathématiquement, l'écriture inversée de la représentation de P dans la base N, où N est la taille de ton alphabet, écrit avec les éléments de l'alphabet.

$page = $_GET["page"];
$alphabet = "abcdefghijklmnopqrstuvwxyz";
$base = strlen($alphabet);

// Calcul du suffixe commun à toute la page
$suffixe = "";
$p = $page - 1;   // On doit se décaler d'un car la première page est hors alphabet
while ($p > 0)
{
    $suffixe = $suffixe . $alphabet[($p - 1) % $base]; // On rajoute au suffixe la lettre en cours
    $p = (int)(($p - 1) / $base); // On passe à la lettre suivante
}

// Parcours de toutes les lettres à afficher sur la page en cours
$lettres = str_split($alphabet);
foreach ($lettres as $lettre)
{
    echo $lettre . $suffixe . "<br />";
}
0
Up svp
0