Renvoyer chaine de caractère entre 2 caractères spécifiques

gui
Eléphant du PHP | 100 Messages

14 avr. 2010, 15:47

Bonjours à vous,
Je cherche une fonction qui permettrai de faire une peu comme "substr" (renvoye la chaine de caract à partit de la position voulue jusqu'à une autre position).
Dans mon cas je cherche donc une fonction qui puisse renvoyer une chaine de caract compise entre deux caratère spécifique: ici "|" pour les 2 caractères.
Une telle fonction ou son dérivé existe t'elle, j'ai fait quelque recherche mais sans succes.
Meric d'avance
Cordialement gui

ViPHP
ViPHP | 5462 Messages

14 avr. 2010, 15:53

hello, regarde du coté des expressions relationnelles
preg_match
:wink:

gui
Eléphant du PHP | 100 Messages

14 avr. 2010, 16:07

J'ai bien regardé preg_match, le problème est que celui ci renvoie un nombre 0 si il n'a pas trouvé l'expression et 1 si il l'a trouvé or j'aimerai qu'il me renvoie la chaine de caractère entre les 2 " | ". :cry:

ViPHP
ViPHP | 5462 Messages

14 avr. 2010, 16:10

faut récupérer ton paramètre $matches

gui
Eléphant du PHP | 100 Messages

14 avr. 2010, 16:23

Ok je commence à comprendre ca peut marcher
Par exemple, dans ">gi|11514025|PRDB|814716| Homo sapiens |from 2 to 11 | 1" pour récupérer le numéros, ici "11514025".
Ca donnerai qq chose du type

preg_match('/[0-9]/', $host, $matches);

Je regarde si ca marche

ViPHP
ViPHP | 5462 Messages

14 avr. 2010, 16:29

plus ou moins
[0-9] c'est bien pour les chiffres, par contre la y'en a qu'un seul, comme t'en a 8 faudrait faire : [0-9]{8} (\d correspond a [0-9], ducoup \d{8})

je t'invite a allé voire ce site : http://www.expreg.com
pour t'aider dans tes modif y'a un site sympa : http://gskinner.com/RegExr/

:wink:

gui
Eléphant du PHP | 100 Messages

14 avr. 2010, 16:39

Effectivement cela ne prendra que le premier chiffre il me faut les prendre tous par contre je ne peut pas connaitre leur nombre exact (change à chaque fois)
Pour les sites je te remercis je vais regarder ca mais le second ne fonctionne pas, peut être parsque je suis sous unix?

ViPHP
ViPHP | 5462 Messages

14 avr. 2010, 16:48

ca devrait marche si ta flash d'install

pour ton expression ca devrais ressembler a ca : \|(\d+)\|

gui
Eléphant du PHP | 100 Messages

14 avr. 2010, 16:58

C'est bon ca marche
Voilà ce que j'ai mis
$name2=preg_match('/\d+/', $ligne, $matches);
$name2=$matches[0];
Meric beaucoup stealth35 toujours là pour donner un coup de main ca fiat plaisir
Encore merci à toi
bye