Mega string.

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 : Mega string.

par Vaedan » 02 mai 2006, 15:36

Voici le PHP :
preg_match_all( '/([0-9]{5})\(([0-9]);(neg[0-9]{1,2}\*[0-9]{1,2})\)[;]?/', $str, $match );
Maintenant j'explique !
Je pars (d'après ce que j'ai vu) du principe que le premier élément à extraire est un nombre 5 chiffres, suivi d'une parenthèse puis d'un chiffre, un point virgule, et pour finir, neg, un nombre de 1 à 2 chiffres, une étoile et encore un nombre de 1 à 2 chiffres.

Le premier code marche, celui-ci est plus strict.

par freepopo » 02 mai 2006, 15:30

Merci beaucoup de prendre le temps de régler mon probleme, je suis un peu gêné...
Sinon j'ai trouvé un autre solution un peu batarde en attendant, je remplace tous les "(",")" et ");" par des simple ";".
Ce qui fait que (a priori) dans mon tableau, j'ai bien les 3 chaines de caracteres qu'il me faut.

par Vaedan » 02 mai 2006, 15:25

Tout d'abord, le code que je t'ai passé devrait normalement fonctionner pour la chaine que tu viens de me montrer. Seulement tu ne nous avais pas parlé d'une récurcivité du genre xxx(xx;xx); ! Il est possible d'améliorer mon expression et c'est ce que je vais faire. Je te poste ça une fois fini.

par freepopo » 02 mai 2006, 15:18

Je te remercie !

Cela semble marcher mais j'ai oublié de préciser que j'avais des suites du type de caracteres dont j'ai parlé .
exemple :

Code : Tout sélectionner

25105(2;neg6*7);25106(1;neg24*36);25108(6;neg24*36)
Séparés par des points virgules. Que faudrait-il modifier dans l'expression réguliere pour prendre cela en compte ?

PS : Pourquoi les motifs récupérés se répètent 2 fois dans le tableau comme dans ton exemple ?

Merci d'avance Vaedan !

par Vaedan » 02 mai 2006, 15:06

// Chaine de base
$str = '25105(2;neg6*7)';

// Un peu de PCRE
preg_match_all( '/([^\(;\)]+)/i', $str, $match );

// Le grand mystère
print_r( $match );

/* Affiche
Array
(
    [0] => Array
        (
            [0] => 25105
            [1] => 2
            [2] => neg6*7
        )

    [1] => Array
        (
            [0] => 25105
            [1] => 2
            [2] => neg6*7
        )
)*/

par guilt92 » 02 mai 2006, 14:53

Bonjour,

je te conseille de jeter un coup d oeil au tutorialtu trouveras ton bonheur.
(regarde la fonction split)

Mega string.

par freepopo » 02 mai 2006, 14:50

Bonjour,
je cherche a extraire des morceaux d'une chaine de caractere.
J'aimerais savoir quelle fonction permet de lire une chaine de caractere JUSQU'A tel autre caractere.

Exemple :
25105(2;neg6*7)
Je voudrais mettre dans un tableau tab[0]=25105, tab[1]= 2 et tab[3]=neg6*7.
Il faudrait que je lise la chaine jusqu'a ce que je trouve la parenthèse ouvrante ( et ainsi de suite...

Je vous remercie par avance pour votre aide.