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);
Le plus élégant serait peut être de passer par une expression régulière, avec un pattern du genre
[php]"/(.*)[;|\|]/Ui"[/php]
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 |
[php]$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);[/php]