Fonction PHP de content spinning : contenu texte généré

Article ajouté le 21/12/2018

Le content spinning permet de générer des textes et des paragraphes rapidement à partir de "spin" représentant le template de génération. On peut donc grâce à cette technique générer plusieurs textes aléatoirement à partir d'un template.

Ce n'est pas évident vu comme ça mais avec un exemple c'est beaucoup plus parlant. Je vous invite donc à découvrir l'exemple de spin suivant.

Exemple de spin

Le spin suivant représente votre template de génération. Grâce à la fonction de content spinning que vous retrouverez en fin de page, vous obtiendrez des textes générés.

$string = "{{ {{Effectuez|Réalisez}} {{{{votre|un}} devis|{{votre|une}} estimation}} en ligne.}}";

Textes générés

Voici quelques textes générés grâce à la fonction de spin et notre template ci-dessus.

Effectuez un devis en ligne.
Effectuez votre estimation en ligne.
Réalisez une estimation en ligne.

La fonction PHP

Et voici la fonction de spin qui vous permettra de générer vos textes. Je ne rentrerais pas dans les détails de sa composition car cela risque d'être compliqué à expliquer.

En revanche, j'attire votre attention sur la première ligne avec la fonction mt_srand() : Grâce à cette ligne, on peut indiquer à la fonction de générer un texte aléatoire en fonction de la page sur laquelle on se trouve. Cela permet d'avoir toujours le même texte en fonction de la page appelée. Vous pouvez donc supprimer cette ligne si vous souhaitez que votre texte soit toujours aléatoire sur une même page.

function Spin($txt)
{
   mt_srand(crc32($_SERVER['REQUEST_URI']));
   $pattern = '#\{([^{}]*)\}#msi';
   $test = preg_match_all($pattern, $txt, $out);
   if (!$test) return $txt;
   $atrouver = array();
   $aremplacer = array();
   foreach($out[0] as $id => $match)
   {
      $choisir = explode("|", $out[1][$id]);
      $atrouver[] = $match;
      $aremplacer[] = $choisir[mt_rand(0, count($choisir)-1)];
   }
   $reponse = str_replace($atrouver, $aremplacer, $txt);
   return Spin($reponse);
}

Poster un commentaire

Commentaire

Nom

Adresse e-mail

Votre adresse e-mail n'est pas publiée lorsque vous ajoutez un commentaire.
Tous les champs sont obligatoires pour soumettre votre commentaire.