Connaître la taille maximale et minimale d’un spin + classe de spin
Niveau dev. : débutant + notions de PHP5
Pour ce quatrième article, j’ai encore ouvert mes cartons (promis j’ai bientôt fini pour vous présenter du neuf), il s’agit d’un script assez simple que j’ai créé pour répondre à une problématique bien précise… Déterminer la taille maximale et minimale d’un spin.
1. La problématique
Il y a 3 composantes principales à vérifier avant de se servir d’un spin :
- Vérifier que celui-ci n’est pas buggué (voir la solution dans l’article précédent, solution qui a été implémentée plus proprement dans la classe que vous trouverez en bas de cet article)
- Vérifier que le spin n’a pas un taux de similarité trop élevé : autrement dit que chaque spin généré sera assez différent du précédent pour éviter tout duplicate content.
- Vérifier que le spin est à la bonne taille. C’est ce qui va nous intéresser aujourd’hui !
- Et bien d’autres…
En effet si vous avez déjà rédigé ou généré un spin, vous savez qu’il est assez difficile de prévoir la taille exact de celui-ci une fois généré. Et cette inconnue peut poser problème lorsqu’on utilise des tools ou qu’on souhaite soumettre sur des supports mettant une limitation sur la taille du contenu soumis (comme « Sick Submitter » par exemple).
Certains scripts d’annuaires comme les Freeglobes par exemple, ne permettent pas de soumettre plus de 255 caractères. Il faut donc être capable de générer un texte non tronqué et de qualité qui rentre dans l’intervalle requis (à savoir ~100 à 252 caractères (certains freeglobes n’acceptant pas les textes de plus de 253 car.)). Ceci n’est qu’un exemple parmi tant d’autres…
2. Explication du code
Le script spin check n’était pas très facile à utiliser, j’ai donc pour ce nouvel article codé une classe PHP. Elle est assez simple pour que tout le monde puisse comprendre le code.
Le script fonctionne de la manière suivante : on lui soumet un spin, qui va être parcouru et au final on obtiendra :
- Le texte le plus long possible,
- Le texte le plus court possible,
- Une version aléatoire/random.
Vous avez ainsi les deux composantes recherchées pour correspondre aux exigences de telle ou telle soumission.
Pour fonctionner le script va simplement parcourir toutes les occurrences du spin et choisir la chaîne qui est la plus longue, une fois le spin maximal généré, on compte le nombre de caractères. Inversement pour le spin minimal, on va parcourir toutes les occurrences et ressortir la chaîne la plus courte. Pour le random on génère « normalement » et aléatoirement le spin.
3. La classe PHP et son utilisation
Le test de débug est intégré à la classe, il s’agit de la méthode (fonction) nommée « debug() ».
Pour la génération du spin on utilise la méthode (fonction) « contentSpinning() ».
Utilisation :
<?php
//on inclue la classe
@include(‘Spin.class.php’);// récupère le spin, si on a mis en place un formulaire
$spinning = ($_REQUEST['spin']) ? $_REQUEST['spin'] : « »;// A ne pas retirer : le try sert à capturer les éventuelles erreurs
try
$spin = new Spin($spinning);// On demande le Spin Random
$spin_aleatoire = $spin->contentSpinning();// On demande le Spin MAX
$spin->minmax = 1;
$spin_max = $spin->contentSpinning();// On demande le Spin Min
$spin->minmax = 0;
$spin_min = $spin->contentSpinning();//on calcul la longueur du texte généré
$strlen_max = strlen($spin_max);
$strlen_min = strlen($spin_min);
$strlen = strlen($spin_aleatoire);// vous gérez l’affichage ou le traitement des données comme vous voulez
catch(Exception $e)
$affichage = ‘<div>’.$e -> getMessage().’</div>’;
Pour télécharger la classe : http://mb.imagika.fr/demo/Spin.class.txt
Si vous souhaitez tester la démo en ligne : http://mb.imagika.fr/demo/spinmax.php
Si vous avez des questions ou que vous souhaitez partager des astuces sur Seisme.net n’hésitez pas à me contacter.