Boucle while

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Boucle while

par jed » 15 juin 2007, 18:11

$var = preg_replace ("|", "\n", $A);
:wink:

par Invité » 15 juin 2007, 10:29

Merci pour cette réponse rapide.

J'avais abordé le problème en bouclant sur des comparaisons de sous-chaines après 2 "explodes",
mais je pensais que boucler avec un while était plus "élégant".

Encore merci pour cette solution.

par Ryle » 15 juin 2007, 10:22

Le plus élégant serait peut être de passer par une expression régulière, avec un pattern du genre
"/(.*)[;|\|]/Ui"
Cela devrait te permettre de retrouver dans le tableau des résultats capturés par les parenthèses, toutes les chaines qui se terminent par un point virgule ou un pipe.. il te suffirait ensuite de purger les doublons à l'aide des fonctions sur les tableaux... c'est à tester par contre, chuis pas certain de la syntaxe :)

Sinon tu peux jouer avec explode() ou parcourir la chaine caractère par caractère et construire un tableau de sous-chaines à chaque fois que tu tombes sur un ; ou |
$str = ''; // sous-chaine, variable temporaire
$tab = array(); // tableau de résultat
for ($i=0; $i<strlen($chaine); $i++) {
  if ($chaine[$i] == ';' || $chaine[$i] == '|') { // si caractère séparateur trouvé
    $tab[] = $str; // ajout de la chaine dans le tableau
    $str = ''; // raz de la chaine
  }
  else { // sinon
    $str.= $chaine[$i]; // ajout du caractère dans la sous chaine
  }
}
print_r($tab);

Boucle while

par JMB » 15 juin 2007, 10:08

Bonjour à tous, newbie en PHP, j'éprouve un problème pour le traitement de cette chaine.

Code : Tout sélectionner

$A="a.php|xx;a.php|yy;b.php|ss;uu.php|rr;uu.php|dd;uu.php|gg;";
Je souhaiterai abtenir le résultat suivant :

Code : Tout sélectionner

a.php xx yy b.php ss uu.php rr dd gg
Je pense que la manière la plus élégante est un "while" mais je n'arrive pas à la mettre en application.