Outil pour créer un tableau PHP facilement

Rayfi Messages postés 203 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 28 juin 2017 - 1 mars 2014 à 17:03
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 3 mars 2014 à 23:41
Bonjour,

Y'as t-il un outil sur le web ou un code source en php pour que quand je met une liste dans un textarea, et quand je submit mon formulaire il reconvertit tout les mots en array PHP ? Car j'ai une grosse liste de 500 mots que je dois transformer en array mais les faires manuellement serais du suicide !

Merci d'avance.

5 réponses

Rayfi Messages postés 203 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 28 juin 2017
1 mars 2014 à 17:07
Si vous n'avez pas bien compris, c'est quand j'envois ceci sur un formulaire :

Salut
a
tous
cv
?

Je veux que ça se transforme une fois envoyer en ceci :

Array('Salut', 'a', 'tous', 'cv', '?');

Merci d'avance.
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
1 mars 2014 à 17:19
tout simplement :

// fin de ligne
define('EOL', chr(10));

// récupération et correction des fins de lignes et convertion en tableau
$words = explode( EOL, 
  str_replace(EOL.EOL, EOL,
    str_replace(chr(13), EOL, $_POST['value']); 
  ));
 
// trim et suppréssion, si vide, des lignes
foreach($words as $k => &$v){
  $v = trim($v);
  if(empty($v))
  {
    unset($words[$k]);
  }
}

print('<pre>');
print_r($words);
print('</pre>');
0
Rayfi Messages postés 203 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 28 juin 2017
Modifié par Rayfi le 1/03/2014 à 21:32
Mais c'est pas ça, ton code renvois un array type
Array
(
[0] => p
[1] => o
[2] => p
)

Alors que moi je veux qu'il se transforme en

array('p', 'o', 'p'); donc en gros qu'il renvois du code PHP.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
Modifié par jordane45 le 2/03/2014 à 02:11
Bonjour,

Mais c'est pas ça, ton code renvois un array type
Array
(
[0] => p
[1] => o
[2] => p
)

Alors que moi je veux qu'il se transforme en

array('p', 'o', 'p');

Tu peux m'expliquer la différence ?
Testes cet exemple :
 $tbl = array(0,1,2,3,4,5,6,6,7,8,9);
 print_r($tbl);
 
 $t=array();
 for($i=0;$i<10;$i++){
 $t[$i]=$i;
}
 print_r($t);



Sinon... essaye d'expliquer plus clairement (avec un exemple concret) ce que tu souhaites avoir....

donc en gros qu'il renvois du code PHP.

A moins que tu cherches à obtenir : nom pas un ARRAY mais une chaine de caractère qui contiendrait : le mot "array" suivi de tes mots séparés par des virgules ???
(si c'est ça.. il te suffit de modifier juste une petite portion du code donnée...
$concatenationdeV ="";
// trim et suppréssion, si vide, des lignes
foreach($words as $k => &$v){
  $concatenationdeV .= "'".trim($v) . "',";
  if(empty($v)){
     unset($words[$k]);
   }
}
$maStringArr = "array(".substr($concatenationdeV ,0,-1).")";
Echo $maStringArr;

... mais je n'en comprend pas l'intérêt...

Edit : correction du code pour retirer le point-virgule en trop à la ligne 8..
Edit2 : ajout des quotes dans la variable

Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
Rayfi Messages postés 203 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 28 juin 2017
2 mars 2014 à 01:40
Oui c'est bien ça, je cherche avoir une chaine de cractères qui contient le mot array suivi des mots séparés par des virgules et des '', mais ton code me renvois une erreur : Parse error: syntax error, unexpected '.'
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
2 mars 2014 à 01:46
ton code me renvois une erreur
Et je pense que tu devrais pouvoir la trouver assez facilement....

il y a un point virgule en trop à la ligne indiquée dans ton message d'erreur...
Parse error: syntax error, unexpected '.' ..... at line : xxx
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
2 mars 2014 à 01:47
NB :
Oui c'est bien ça, je cherche avoir une chaine de cractères qui contient le mot array
Ah ben ... expliqué comme ça ... ça devient tout de suite plus facile à comprendre.. dommage que tu ne l'ai pas formulé directement comme ça dans ta question.. ça aurait été plus simple... non ?
0
Rayfi Messages postés 203 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 28 juin 2017
Modifié par Rayfi le 2/03/2014 à 02:18
Oui jl'avais règles aufait désolé, par contre ton code ne marche pas, il n'y a pas d'erreurs mais en faite il me renvois la dernière lettre envoyé, dans ma requête POST j'envois :

Salut
cv


la chaine de caractères me renvois "array('cv')" ....
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
2 mars 2014 à 11:39
Tu me fais voir ton code?
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
Modifié par f0xi le 2/03/2014 à 19:47
halala ... quand c'est mal expliqué dés le départ ...

<?php
// fin de ligne
define('EOL', chr(10));

// récupération et correction des fins de lignes et convertion en tableau
$words = explode( EOL, 
  str_replace(EOL.EOL, EOL,
    str_replace(chr(13), EOL, isset($_POST['value']) ? $_POST['value'] : ''); 
  ));
 
// trim et suppréssion, si vide, des lignes
foreach($words as $k => &$v){
  $v = trim($v);
  if(empty($v))
  {
    unset($words[$k]);
  }
}

if(count($words) == 0)
{
  echo "array();";
} 
else
{
  echo "array('", implode("','", $words),"');";
}

?>


et idéalement la version JSON pour eviter le PHP Injection et l'utilisation avec Ajax (jquery.parseJson) ou PHP (json_decode):
echo json_encode($words);



________________________________________________________
[ besoin de câbles audio, vidèo, informatique pas cher ?]
0
Rayfi Messages postés 203 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 28 juin 2017
3 mars 2014 à 01:01
toujours des erreurs Parse error: syntax error, unexpected ';' ou '.' ...
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
3 mars 2014 à 09:29
Bonjour,
@f0xi : Le implode... j'y ai pensé aussi après avoir posté ma réponse.. en effet.. c'est plus propre.

@Rayfi : Tu as un message d'erreur ?.... donc :
1 - TU NOUS MONTRES TON CODE
2 - TU NOUS DONNES LE MESSAGE D'ERREUR ENTIER (avec le N° de ligne).
0
Rayfi Messages postés 203 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 28 juin 2017
3 mars 2014 à 17:23
C'est le même code que celui de f0xi qui renvois une erreur
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
3 mars 2014 à 17:41
pffff......@Rayfi : ... Fais des efforts stp.... lorsque tu as un message d'erreur indique nous :

QUEL EST LE MESSAGE D'ERREUR EXACTE ????
QUEL EST LE N° DE LIGNE INDIQUE DANS LE MESSAGE ????

Ne serait-ce pas vers la ligne 8 ?
$words = explode( EOL, str_replace(EOL.EOL, EOL,str_replace(chr(13), EOL, isset($_POST['value']) ? $_POST['value'] : '')));
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
3 mars 2014 à 22:21
WA PURRIN ! bon je test mon code (parce que je code de tête donc hein ... forcement ... ça peu buggé après faut faire un effort pour corriger les pti soucis ... c'est d'jà bin d'avoir l'travail maché comme d'la purée hein !)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
3 mars 2014 à 23:41
<?php
/* REQUIRED
*/
define('EOL', chr(10));

/* explode_words
    sépares les mots d'une phrase, ainsi que la ponctuation ($replaceAll=false)
    paramètres :
      $str          string  chaine contenant la phrase à découper
      $replaceAll   bool    remplace (true) ou non (false) les ponctuations et certains autres caractères 
    retour :
      array, tableau mono-dimensionnel contenant tout les mots de la phrase.
*/
function explode_words($str, $replaceAll = true) {
  $str   = str_replace(array(chr(13), chr(32), EOL.EOL), EOL, $str);
  if($replaceAll){
    $str   = str_replace(array('! ','? ','. ','; ',', ',': ','/','\\','|','\'',''','"','{','}','(',')','[',']','  '), EOL, ' '.$str.' ');
  }
  $words = explode( EOL, $str );
  foreach($words as $k => &$v) {
    $v = trim(addslashes($v));
    if(empty($v)){ unset($words[$k]); }
  }
  return array_values($words);
}

/* words_to_phparray
    convertis un tableau en code php array(value,...); ou array(key=>value,...) ($includeKeys=true)
    paramètres :
      $words        array tableau mono/multi dimensionnel
      $includeKeys  bool  inscrit les clefs d'association dans le retour
    retour :
      string, représentation chaine d'un tableau PHP
*/
function words_to_phparray(array $words,$includeKeys=false) {
  if(count($words)==0){
    return "array();";
  }  
  if($includeKeys){
    $r = 'array('.EOL;
    $c = 0;
    foreach($words as $k => $v){
      if($c++>0){
        $r.= ','.EOL;
      }
      $r.= '  ';
      $r.= preg_match('/^\d{1,3}$/',$k) ? $k : "'$k'";
      $r.= ' => ';
      if(is_array($v)){
        $r.= words_to_phparray($v, $includeKeys);
      } else {
        $r.= preg_match('/^\d+([.]{1}\d+){0,1}$/',$v) ? $v : "'$v'";
      }
    }
    $r.= EOL.');'.EOL;
    return $r;
  }
  else 
  {
    return "array('".implode("','", $words)."');".EOL;
  }
}

/* words_to_json
    convertis un tableau de mots en chaine tableau JSON
    paramètres :
      $words    array tableau de mot
    retour :
      string, représentation chaine d'un tableau JSON (utilisable avec PHP json_decode 
      ou Javascript ParseJSON
*/
function words_to_json(array $words) {
  return json_encode( $words, JSON_NUMERIC_CHECK);  
}



/*------------------------------ TESTS ------------------------------*/
/*------------------------------ TESTS ------------------------------*/
/*------------------------------ TESTS ------------------------------*/
$str = "Pi est égal à 3.14159 mais avant le 21eme siecle nous utilisions uniquement 3 voir 4.";
  print('<h3>$str</h3><pre>'.$str.'</pre><hr/>');

$words = explode_words($str);
  print('<h3>$words by explode_words($str)</h3><pre>'); print_r($words); print('</pre><hr/>');

$wordsNRA = explode_words($str, false);
  print('<h3>$wordsNRA by explode_words($str, false)</h3><pre>'); print_r($wordsNRA); print('</pre><hr/>');

$phparray = words_to_phparray($words);
  print('<h3>$phparray by words_to_array($words)</h3><pre>'.$phparray.'</pre><hr/>');

$phparrayKeys = words_to_phparray($words, true);
  print('<h3>$phparrayKeys by words_to_array($words, true)</h3><pre>'.$phparrayKeys.'</pre><hr/>');

eval( '$interprete = '.$phparray );
  print('<h3>$interprete by eval($phparray)</h3><pre>'); print_r($interprete); print('</pre><hr/>');

$json = words_to_json($words);
  print('<h3>$json by words_to_json($words)</h3><pre>'.$json.'</pre><hr/>');

$object = json_decode($json);
  print('<h3>$object by json_decode($json)</h3><pre>'); print_r($object); print('</pre><hr/>');
/*------------------------------ TESTS ------------------------------*/
/*------------------------------ TESTS ------------------------------*/
/*------------------------------ TESTS ------------------------------*/

?>



bon et maintenant tu te débrouille ! la t'as tout ! XD (latatou latatou ho ! latatou latatou hey !)
0
Rejoignez-nous