j'ai un fichier txt avec en ligne
123456
123
1234
1234567
123.4567
j'aimerais recupérer que les lignes commencant par soit 4 soit 5 chiffres
j'ai un code comme ceci
mais je ne sais pas comment on peut faire([0-9\.]){4}
merci pour votre aide
j'ai un fichier txt avec en ligne
123456
123
1234
1234567
123.4567
j'aimerais recupérer que les lignes commencant par soit 4 soit 5 chiffres
j'ai un code comme ceci
mais je ne sais pas comment on peut faire([0-9\.]){4}
merci pour votre aide
pour lire le contenu du fichier, vous avez cette fonction :
https://secure.php.net/manual/fr/fun...t-contents.php
et ensuite pour trouver les nombres essayez ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $texte = "123456 123 1234 du texte 1234567 123.4567 "; preg_match_all("/^([0-9.]{1,5})$/m", $texte, $resultats);
tester ton code sur http://www.phpliveregex.com mais ca ne marche pas
Tu n'as pas de ligne avec 5 chiffres
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
Tu as dit 4 et 5, pas 4 et plus.
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
Et quand il y en a 6 ?
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
Essaie ça.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php $texte =" 666666 333 4444 55555 7777777 888.8888 1111.111 22222.2222"; $pattern = "/(?<!\.)\b(\d{4,5}(\.\d+){0,1})\b/m"; preg_match_all($pattern, $texte, $resultats); var_dump($resultats);
Donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 array(3) { [0]=> array(4) { [0]=> string(4) "4444" [1]=> string(5) "55555" [2]=> string(8) "1111.111" [3]=> string(10) "22222.2222" } [1]=> array(4) { [0]=> string(4) "4444" [1]=> string(5) "55555" [2]=> string(8) "1111.111" [3]=> string(10) "22222.2222" } [2]=> array(4) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(4) ".111" [3]=> string(5) ".2222" } }
Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.
Mon site : www.emmella.fr
Je recherche le manuel de l'Olivetti Logos 80B.
Alors tu prends 6 mais pas 7 ?
Par ce que tu voulais prendre 1234567.
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
Comme ça.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part preg_match_all("/^[0-9]{4,5}(?:[^0-9].*)?$/m", $texte, $resultats);
en faisant simplement comme celà
ca donne bienpreg_match_all("/^[0-9]{4,5}/m", $input_lines, $output_array);
ca qui me semble pas mal .c'est ce que je cherche mais j'ai pas bien compris cette instruction .c'est soit 4 ou 5 / ou de 4 à 5 chiffres?array(10=>array(60=>66666 1=>4444 2=>55555 3=>77777 4=>1111 5=>22222))
{4,5}
@bigs3232
Tes spécifications ne sont pas claires.
Or si tu as pris mon exemple, dans le résultat que tu postess'il y a 6 chiffres je ne prends pas
666666 est pris, tout comme 7777777 et ils ont respectivement 6 et 7 chiffres !preg_match_all("/^[0-9]{4,5}/m", $input_lines, $output_array);
ca donne bien
array(10=>array(60=>66666 1=>4444 2=>55555 3=>77777 4=>1111 5=>22222))
Pour ma part, j'avais compris "qui ont 4 ou 5 chiffres".
Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.
Mon site : www.emmella.fr
Je recherche le manuel de l'Olivetti Logos 80B.
{4,5} dit matcher au minumum 4 et au maximum 5. Puisque le pattern se comporte avec avidité, si il y a 5, il va matcher 5.
merci badaze .ton code est bien trop compliqué pour moi mais celui à tsuji me semble plus facile à comprendre .ceci dit j'ai pas compris ce code de tsuji.
si tu peux nous apporter un peu de ta lumière(?:[^0-9].*)?
Le sous-pattern : (?:[^0-9].*)?
[1] (?...) signifie les sous-matches de par le pattern dedans (sous-pattern) ne serait pas capturé. La différence peut se voir par exemple via print_r($resultats)
[1.1] sans (Array[1] contient les "submatches")
[1.2] avec (Array[1] se fait disparaître)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Array ( [0] => Array ( [0] => 1234xxxxx [1] => 98765yyyy etc... ) [1] => Array ( [0] => xxxxx [1] => yyyy etc... ) )
[2] [^0-9].*
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Array ( [0] => Array ( [0] => 1234xxxxx [1] => 98765yyyy etc... ) )
[2.1] La première partie [^0-9] se dit tout caratère sauf (une négation) les numériques 0 à 9. Faites attention qu'elle n'est qualifiée par ?. Il faut avoir matché un si c'est réussir. C'est le garant que la ligne commence seulement les numériques 4 à 5 comptes et pas plus et puis après au moins un non-numérique.
[2.2] La deuxième partie .* va matcher tout le reste jusqu'à la fin de la ligne pour l'option m (/m) multi-ligne.
[3] (?...)?
La marque d'interrogation à la fin tient en compte qu'il se peut qu'on trouve immédiatement la fin de ligne ($) sans rien après les 4 ou 5 numériques.
Voilà tout.
merci tsuji pour tes longues explications
Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.
Mon site : www.emmella.fr
Je recherche le manuel de l'Olivetti Logos 80B.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager