IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Dates] Position du curseur dans une chaîne


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut [Dates] Position du curseur dans une chaîne
    Bonjour à tous,

    Je débute une application qui doit me permettre d'extraire une chaîne de caractère depuis un fichier texte ou depuis une URL, je parviens à extraire certaines choses mais je rencontre quelques difficultés à cause surement de mon manque d'expérience c'est pourquoi je m'en remet à vous pour je l'espère m'apportais une solution.

    Question 1:

    Comment faire la recherche d'un mot ou d'un groupe de mots dans un fichier ou une chaîne de caractère en faisant débuter la recherche à partir d'un point précis, par exemple à partir du caractère 355 (ce caractère peut être le résultat d'une variable qui le retourne) ?

    Question 2:

    Comment conserver la dernière position du curseur pour relancer une autre recherche dans ce fichier à partir de ce point ?

    Question 3:

    Comment supprimer dans une variable qui contient le contenu d'un fichier x ou y des caractères se trouvant entre le point de départ (0) et un autre point (355) ?
    Je ne trouve pas la méthode pour faire cela.
    Vous comprendrez surement mieu le sens de ma question en bas de ce post.


    Je pense qu'il doit y avoir une réponse commune aux deux premières questions ?

    Voici la méthode que j'utilise actuellement pour faire mon extraction mais j'ai l'impression de redemarrer à chaque fois au début de ma chaîne ce qui pose problème.

    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
     
     
    <?php
     
    // capture titre 
    $source = file_get_contents("mon_fichier.txt_ou_mon_URL"); //Lecture du fichier texte ou de l'url
     
    //identification de la balise pour indiquer le point de départ de la capture	
    $position_1 = strpos("$source", "Title - ") +8;
     
    //identification de la balise pour indiquer le point final de la capture
    $position_2 = strpos("$source", "Date -");
     
    //calcul de la taille de la chaîne (elle est variable)
    $taille_chaine = ($position_2 - $position_1);
     
    $titre = substr($source, $position_1, $taille_chaine);
    echo $titre;
    ?>
    Avec cette méthode pas de problème j'arrive à extraire à peu près tout ce que je veux mais comment conserver la position de $position_2 pour repartir sur une autre extraction à partir de ce point ?

    J'ai bien pensé à supprimer dans la variable $source la chaîne qui va du point 0 au point $position_2 mais pareil mon manque d'expérience me bloque (comment faire cela ? cf. Question 3)

    Je vous remerci par avance de votre aide.

    Cordialement

    Arnaud

  2. #2
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Bonjour,

    Regarde la fonction fseek() dans le manuel php, et les fonctions associées
    Tu ne pourra utiliser ces fonctions ( fseek ) que pour les fichier local ...

    J'ai bien pensé à supprimer dans la variable $source la chaîne qui va du point 0 au point $position_2 mais pareil mon manque d'expérience me bloque (comment faire cela ? cf. Question 3)
    Regarde la fonction substr()

    manuel de références des fonction php

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par arnaud14
    Question 1:

    Comment faire la recherche d'un mot ou d'un groupe de mots dans un fichier ou une chaîne de caractère en faisant débuter la recherche à partir d'un point précis, par exemple à partir du caractère 355 (ce caractère peut être le résultat d'une variable qui le retourne) ?
    La fonction strpos a un troisième paramètre facultatif indiquant la position à laquelle la recherche débute.

    Citation Envoyé par arnaud14
    Question 2:

    Comment conserver la dernière position du curseur pour relancer une autre recherche dans ce fichier à partir de ce point ?
    C'est purement une question d'ordre algorithmique : il vous suffit d'utiliser une variable pour conserver ce résultat.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Je vous remerci beaucoup, je n'avais pas vu qu'il y avait un troisième paramètre dans la fonction strpos, j'ai tout de suite mis en application ce paramètre et de fait je lance ma requête d'ou je veux dans mon source. Je récupère la dernière position du pointeur dans la variable $position_2 pour la recherche suivante que je place en troisième paramètre de la fonction strpos de la variable suivante qui se trouve être le début de la nouvelle extraction et c'est tout bon.

    Pour la question 3, la réponse se trouve être également dans la réponse des questions 1 et 2 mais je procède un peu différement, en fait je dimentionne ma chaîne source d'un point X à un point Y dans mon fichier ce qui me permet de le traiter en suppriment du texte ou des balises inutiles et ainsi optimiser l'execution des extractions qui suivent.

    Par contre la fonction fseek ne correspond pas à mon besoin et j'utilise déjà substr que je vais conserver mais merci quand même.

    Dans quelques jours je posterais un code d'exemple reprenant ce que je viens de décrire, on ne sait jamais ca pourra peu-être servir à quelqu'un et c'est un exemple de plus pour le forum.

    Encore merci et à bientôt
    Arnaud

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Ca pratique strpos, substr et file_get_contents.
    Voilà comme promis un petit code d'exemple.

    Pour fonctionner, vous devez créer le fichier texte " Base_clients.txt " avec le contenu ci-dessous, puis le code php dans un fichier *.php, les deux fichiers seront dans le même répertoire.

    Le fichier Base_clients.txt
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
     
    Base clients
     
    Total: 10 µ
     
    -1-
    Date inscription: 19 septembrre 2007 µ
    Nom: Dupont µ
    Prenom: Georges µ
    Age: 32 µ
    Profession: maçon µ
     
    -2-
    Date inscription: 8 avril 2007 µ
    Nom: Marais µ
    Prenom: Jean µ
    Age: 47 µ
    Profession: boulanger µ
     
    -3-
    Date inscription: 11 juillet 2006 µ
    Nom: Chevalier µ
    Prenom: Maurice µ
    Age: 67 µ
    Profession: retraité µ
     
    -4-
    Date inscription: 22 decembre 2006 µ
    Nom: Cauet µ
    Prenom: Sebastien µ
    Age: 34 µ
    Profession: assureur µ
     
    -5-
    Date inscription: 3 fevrier 2007 µ
    Nom: Binoche µ
    Prenom: Juliette µ
    Age: 44 µ
    Profession: musicienne µ
     
    -6-
    Date inscription: 30 juin 2007 µ
    Nom: Grant µ
    Prenom: Hugue µ
    Age: 52 µ
    Profession: informaticien µ
     
    -7-
    Date inscription: 17 octobre 2006 µ
    Nom: Depardieu µ
    Prenom: Gerard µ
    Age: 27 µ
    Profession: electronicien µ
     
    -8-
    Date inscription: 11 septembre 2007 µ
    Nom: clerc µ
    Prenom: Julien µ
    Age: 21 µ
    Profession: serveur µ
     
    -9-
    Date inscription: 01 aout 2007 µ
    Nom: Melua µ
    Prenom: Katie µ
    Age: 41 µ
    Profession: Chanteuse µ
     
    -10-
    Date inscription: 07 juillet 2007 µ
    Nom: Chene µ
    Prenom: Nicolas µ
    Age: 29 µ
    Profession: jardinier µ

    Le fichier php
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
     
     
    <?php 
    //Manipulation des chaînes de caractères
    // Ce petit code pratique pour ceux qui un jour
    //auront peut être comme moi besoin de manipuler
    // les chaînes de caractères
    //Merci à julp pour l'info et à developpez.com pour son efficacité 
    // Arnaud14
    $source = file_get_contents("Base_clients.txt");	 //Lecture du fichier texte	
    $i = 1;	
    //<!-- Total clients --> 
    echo '<u>Extraction du nombre de clients</u>';
    echo '<p></p>';
    $position_1 = strpos("$source", "Total:") +7; 
    echo 'Le pointeur 1 se trouve au caractère --> '.$position_1;
    echo '<br>';
    $position_2 = strpos("$source", " µ", $position_1);	
    echo 'Le pointeur 2 se trouve au caractère --> '.$position_2;
    echo '<br>';
    $taille_nombre_client = ($position_2 - $position_1); 
    echo 'La taille de la chaîne est de --> '.$taille_nombre_client, ' caractères';
    echo '<br>';  
    $nombre_clients = substr($source, $position_1, $taille_nombre_client);	
    echo 'Les clients dans la base sont aux nombre de <u><b>'.$nombre_clients, '</u></b>';
    echo '<p></p><p></p>';
     
    // <!-- Date inscription  --> 	
     
    echo '<u>Extraction de la date d\'inscription</u>'; 
    echo '<p></p>'; 
    echo 'La position de départ pour la nouvelle extraction est au caractère n° ' .$position_2, '</u></b>';
    echo '<p></p>';	
    //utilisation du troisieme parametre de la fonction strpos pour indiquer le point de depart pour l'extraction
    //le point de depart est donc le resultat de $position_2   
    //les trois parametres de la fonction strpos sont dans cet exemple
    //- 1 - la variable $source qui contient le fichier texte lu en premier
    //- 2 - La chaîne de caractère à trouver
    //- 3 - La position de départ pour l'extraction 
    $position_3 = strpos("$source", "Date inscription: ", $position_2) +18; 
     
    while ($i <= $nombre_clients): //la boucle qui va bien 
     
    echo 'Le pointeur 3 se trouve au caractère --> '.$position_3;
    echo '<br>';
    $position_4 = strpos("$source", " µ", $position_3);	
    echo 'Le pointeur 4 se trouve au caractère --> '.$position_4;
    echo '<br>';
    $taille_inscription = ($position_4 - $position_3); 
    echo 'La taille de la chaîne est de --> '.$taille_inscription, ' caractères';
    echo '<br>';  
    $inscription = substr($source, $position_3, $taille_inscription);	
    echo 'Ce client s\'est inscrit le <u><b>'.$inscription, '</u></b>';
    echo '<p></p><p></p>';	
     
    //<!-- Nom -->		  
     
    echo '<u>Extraction du nom</u>';
    echo '<p></p>'; 
    echo 'La position de départ pour la nouvelle extraction est au caractère n° ' .$position_4;
    echo '<p></p>';
    $position_5 = strpos("$source", "Nom: ", $position_4) +5; 
    echo 'Le pointeur 5 se trouve au caractère --> '.$position_5;
    echo '<br>';
    $position_6 = strpos("$source", " µ", $position_5);	
    echo 'Le pointeur 6 se trouve au caractère --> '.$position_6;
    echo '<br>';
    $taille_nom = ($position_6 - $position_5); 
    echo 'La taille de la chaîne est de --> '.$taille_nom, ' caractères';
    echo '<br>';  
    $nom = substr($source, $position_5, $taille_nom);	
    echo 'Le nom du client est <u><b>'.$nom, '</u></b>';
    echo '<p></p><p></p>'; 
     
    //<!-- Prenom -->  
     
    echo '<u>Extraction du prenom</u>';	
    echo '<p></p>'; 
    echo 'La position de départ pour la nouvelle extraction est au caractère n° ' .$position_6;
    echo '<p></p>';
    $position_7 = strpos("$source", "Prenom: ", $position_6) +8; 
    echo 'Le pointeur 7 se trouve au caractère --> '.$position_7;
    echo '<br>';
    $position_8 = strpos("$source", " µ", $position_7);	
    echo 'Le pointeur 8 se trouve au caractère --> '.$position_8;
    echo '<br>';
    $taille_prenom = ($position_8 - $position_7); 
    echo 'La taille de la chaîne est de --> '.$taille_prenom, ' caractères';
    echo '<br>';  
    $prenom = substr($source, $position_7, $taille_prenom);	
    echo 'Le prénom du client est <u><b>'.$prenom, '</u></b>';
    echo '<p></p><p></p>'; 
     
    //<!-- Ages -->	
     
    echo '<u>Extraction de l\'age</u>';	
    echo '<p></p>'; 
    echo 'La position de départ pour la nouvelle extraction est au caractère n° ' .$position_8;
    echo '<p></p>';
    $position_9 = strpos("$source", "Age: ", $position_8) +5; 
    echo 'Le pointeur 9 se trouve au caractère --> '.$position_9;
    echo '<br>';
    $position_10 = strpos("$source", " µ", $position_9);	
    echo 'Le pointeur 10 se trouve au caractère --> '.$position_10;
    echo '<br>';
    $taille_age = ($position_10 - $position_9); 
    echo 'La taille de la chaîne est de --> '.$taille_age, ' caractères';
    echo '<br>';  
    $age = substr($source, $position_9, $taille_age);	
    echo 'Le client est agé de <u><b>'.$age, '</u></b> ans';
     
    echo '<p></p><p></p>'; 
    //<!-- Profession -->
    echo '<u>Extraction de la profession</u>'; 
     
    echo '<p></p>'; 
    echo 'La position de départ pour la nouvelle extraction est au caractère n° ' .$position_10;
    echo '<p></p>';
    $position_11 = strpos("$source", "Profession: ", $position_10) +12; 
    echo 'Le pointeur 9 se trouve au caractère --> '.$position_11;
    echo '<br>';
    $position_12 = strpos("$source", " µ", $position_11);	
    echo 'Le pointeur 10 se trouve au caractère --> '.$position_12;
    echo '<br>';
    $taille_profession = ($position_12 - $position_11); 
    echo 'La taille de la chaîne est de --> '.$taille_profession, ' caractères';
    echo '<br>';  
    $profession = substr($source, $position_11, $taille_profession);	
    echo 'La profession du client est  <u><b>'.$profession, '</u></b>';
     
    echo '<p></p><p></p>'; 
     
    echo $prenom, ' ' .$nom, ' ' .$age, ' ans ' .$profession, ' c\'est inscrit le ' .$inscription, '.';
    echo '<hr width="25%" align="left" color="050000">'; 
    echo '<p></p><p></p>';
     
    if ($i < $nombre_clients) 
    {    
    // <!-- Date inscription  --> 	
     
    echo '<u>Extraction de la date d\'inscription</u>'; 
    echo '<p></p>'; 
    echo 'La position de départ pour la nouvelle extraction est au caractère n° ' .$position_12, '</u></b>';
    echo '<p></p>';	
    $position_3 = strpos("$source", "Date inscription: ", $position_12) +18;
    } 
    else 
    {    
    echo "Fin du traitement de la base client.";
    }
     
    $i++;
    endwhile; 
     
    ?>
    Gros merci à tous ;-)

    Arnaud

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2008, 22h14
  2. recuperer la position du curseur dans une textbox
    Par bleuerouge dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/10/2007, 10h41
  3. [vb]position du curseur dans une zone définie
    Par maxdwarf dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/02/2007, 06h54
  4. [VB6] position du curseur dans une zone texte et insertion caractere
    Par tim69000 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/05/2006, 09h52
  5. Obtenir la position du curseur dans une Image
    Par bastoune dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/11/2003, 21h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo