Attention, ce blog est en mode archive. Il n'est plus alimenté et consultable en lecture seulement. Il se peut que certaines informations ne soient plus à jour.
Si vous souhaitez continuer à me suivre, je continuerai à bloguer d'ici quelques semaines sur le blog de SEObserver.

Générer des titres et descriptions uniques grâce au cadavre exquis

by 512banque on 9 décembre 2008

Voici « cadavre délicieux » version miniature.

Il s’agit d’un script de cadavre exquis permettant de générer simplement des descriptions uniques pour vos inscriptions dans les annuaires.

  1.  
  2.  
  3. <?php
  4. //avant tout, pour sécuriser
  5. if(isset($_GET) && is_array($_GET))
  6.   foreach($_GET as $key => $value){
  7.       if(ini_get(register_globals))$value=stripslashes($value);
  8.       $value=htmlentities($value,ENT_QUOTES);
  9.       $_GET[$key]=$value;
  10.       ${$key}=$value;
  11.   }
  12.  
  13. if(isset($_POST) && is_array($_POST))
  14.   foreach($_POST as $key => $value){
  15.       if(ini_get(register_globals))$value=stripslashes($value);
  16.       $value=htmlentities($value,ENT_QUOTES);
  17.       $_POST[$key]=$value;
  18.       ${$key}=$value;
  19.   }
  20. //définition de fonctions
  21. function creuse($tableaux,$ligne){
  22.  
  23.   $suite=$tableaux;
  24.   array_shift($suite);
  25.   $criteres=$GLOBALS[$tableaux[0]];
  26.  
  27.   foreach($criteres as $crit){
  28.       if(count($tableaux)==1) echo $ligne.‘ ‘.$crit.‘<br/>’;
  29.       else creuse($suite, $ligne.‘ ‘.$crit);
  30.   }
  31. }
  32.  
  33. //définition de variables
  34. $nb = $_GET[‘nb’];
  35. $vide= »;
  36.  
  37. if(!empty($_POST))
  38. {
  39. $nb_champs = $_POST[‘nb_champs’];
  40. $TableauDesTableaux = array();
  41.  
  42. for($i=1;$i<=$nb_champs;$i++)
  43. {
  44. $champ = "champ".$i;
  45. if (strlen(ltrim($_POST[$champ])) > 0) {
  46.  $TableauDesTableaux[]=$champ;
  47.  
  48.  //crée l’array des url
  49.  ${$champ} = array();
  50.  
  51.  //explode les champs par le retour à la ligne
  52.  $tableau_champ = explode("\r\n", $_POST[$champ]);
  53.   foreach ($tableau_champ as $value) {
  54.    if(!in_array($value, ${$champ})&&count(${$champ})<6) //si l’url n’est pas déjà dans le tableau des URL
  55.    {
  56.      ${$champ}[]=$value;
  57.    }
  58.   }
  59.  
  60. } // sinon c’est que le champ est vide
  61. }
  62.  
  63. creuse($TableauDesTableaux,$vide);
  64. }
  65.  
  66.  
  67. ?>
  68. <?php if(empty($nb)) { ?>
  69. <select name="nb" onchange=‘location=this.options[this.selectedIndex].value’>
  70. <option>Selectionner un nombre de morceaux</option>
  71. <option value="creusep.php?nb=2">2</option>
  72. <option value="creusep.php?nb=3">3</option>
  73. <option value="creusep.php?nb=4">4</option>
  74. <option value="creusep.php?nb=5">5</option>
  75. </select>
  76. <?php } else { ?>
  77. <h1><?php echo $nb; ?> morceaux </h1>
  78. <p>Attention :</p>
  79. <li>Pas d‘espace avant, pas d’espace après,</li>
  80. <li>Pas de ligne vide,</li>
  81. <li>N‘oubliez pas la ponctuation à la dernière phrase.</li>
  82. <li>Le script de démo est limité à 5 entrées différentes par morceau.</li>
  83.  
  84.  
  85. <form method="post" action="creusep.php">
  86. <?php
  87. for($i=1;$i<=$nb;$i++)
  88. {
  89. echo ‘<textarea name="champ’.$i.’" rows="10"></textarea>
  90. ‘;
  91. }
  92. ?>
  93.  
  94.  
  95. <input type="hidden" value="<?php echo $nb; ?>" name="nb_champs" />
  96. <input type="submit" class="submit" />
  97. </form><?php } ?>
  98.  
  99.  

Edit : Voici la démo du script en direct, limité à 5 possibilités par morceau.

{ 5 comments }