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 :

Lire une chaine après une variable ?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Points : 63
    Points
    63
    Par défaut Lire une chaine après une variable ?
    Bonjour,

    J'ai développé un script en php afin de chercher la présence de chaine dans plusieurs textes.

    Cependant je souhaite optimiser la recherche. Je souhaiterai savoir comment tester la présence de la chaine après un mot clé précis.

    Ex:
    Test 01 Oct 2012
    Date: 01 Oct 2012

    Comment dire: trouver '01 Oct 2012' qui se trouve après le mot 'Date' ?

    Merci
    --
    Quand vous marquez "Résolu", pensez aux autres, dites Merci et marquez la solution

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    si tu fais tes recherche avec mb_stripos(), il est possible de paramétrer l'appel avec ceci :
    offset : La position dans haystack où l'on doit commencer à chercher

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Points : 63
    Points
    63
    Par défaut
    Salut,

    Merci, j'ai essayer de coder avec mb_stripos, mais cela ne donne rien; voici mon code

    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
     
    @ $fp = fopen($file, 'r') or die('Ouverture en lecture impossible !');
    $existe = FALSE;
    while (!feof($fp)) 
    {
    	$ligne = fread($fp, 1024);
    //if (preg_match('/\b' . $_POST['nom'] . '\b/', $ligne) && preg_match('/\b' . $_POST['date'] . '\b/', $ligne)) Ok
     
    	if (mb_stripos('Date:', ' . $_POST['nom'] . ', 'Date:'))
    	{
    		$existe = TRUE;
    	}
    }	
    fclose($fp);
     
    if ($existe)
    {
    	echo"<a href='$file'>$file</a>";
    	echo "<br/>";
    }
    En faite, je me suis planter, je chercher à recherche une chaine qui se trouve toujours avec le meme mot au début:

    Fichier 1
    toto
    Date: Mon, 01 Oct 2012

    Fichier 2
    titi
    toto
    Date: Thu, 02 Oct 2012

    Fichier 3
    Date: XXX, variable recherché
    --
    Quand vous marquez "Résolu", pensez aux autres, dites Merci et marquez la solution

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Je voyais plus comme ça :
    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
    <?php
     
    @$fp = fopen($file, 'r') or die('Ouverture en lecture impossible !');
    $existe = false;
     
    $needle = 'Date:';
    $len    = mb_strlen($needle);
     
    while( ! feof($fp)) {
        $ligne = fread($fp, 1024);
        if (mb_stripos($ligne, $needle) !== false) {
            if (mb_stripos($ligne, $_POST['nom'], $len) !== false) {
                $existe = true;
                break;
            }
        }
    }
    fclose($fp);
     
    if ($existe) {
        echo
    <<<HTML
    <a href="{$file}">{$file}</a><br />
    HTML;
    }
     
    ?>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Points : 63
    Points
    63
    Par défaut
    En faite, je me suis légèrement planter, je chercher à recherche une chaine qui se trouve toujours avec le meme mot au début:

    Fichier 1
    toto
    Date: Mon, 01 Oct 2012

    Fichier 2
    titi
    toto
    Date: Thu, 02 Oct 2012

    Fichier 3
    Date: XXX, variable recherché
    --
    Quand vous marquez "Résolu", pensez aux autres, dites Merci et marquez la solution

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    ok, mais comment tu reconnais du coup ta fin de chaine ?
    Tu as le début : "Date:" c'est déjà pas mal mais après comment savoir quand t'arrêter dans la récupération du texte qui suit ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 120
    Points : 63
    Points
    63
    Par défaut
    C'est une bonne question !!!

    Le texte dans lequel je recherche ce présente comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    Date: Mon, 01 Oct 2012 11:48:04 +0200
    From: "tata titi" <tata@titi.org>
    To: tata@titi.org
    Subject: test du pc
    MIME-Version: 1.0
    ...
    Sachant que je souhaite rechercher sur les lignes Date et Subject
    --
    Quand vous marquez "Résolu", pensez aux autres, dites Merci et marquez la solution

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Comme ça :
    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
    <?php
     
    @$fp    = fopen($file, 'r') or die('Ouverture en lecture impossible !');
    $values = array();
     
    while( ! feof($fp)) {
        $row = fread($fp, 1024);
        // je considère que ton fichier n'est pas en utf-8
        // et que les texte recherchés sont toujours en début de ligne
        if (stripos($row, 'Date:') === false) {
            $values['date'] = substr($row, 5);
        }
        else
        if (stripos($row, 'Subject:') !== false) {
            $values['subject'] = substr($row, 8);
        }
        if (count($values) === 2) {
            break;
        }
    }
    fclose($fp);
     
    if ( ! empty($values)) {
        echo
    <<<HTML
    <a href="{$file}">{$file}</a><br />
    HTML;
    }
     
    ?>

Discussions similaires

  1. [XL-2007] Transformer une chaine dans une cellule en une variable
    Par apt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/02/2015, 22h12
  2. Assigner une partie d'une chaine dans une variable.
    Par beware dans le forum Langage
    Réponses: 3
    Dernier message: 26/09/2012, 10h02
  3. Externalisation de chaine. Sortir une chaine contenant une variable ?
    Par Djobird dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 08/06/2009, 17h43
  4. chercher caractére d'une chaine dans une chaine
    Par ulysse031 dans le forum Langage
    Réponses: 25
    Dernier message: 21/03/2007, 18h09
  5. Réponses: 2
    Dernier message: 19/10/2005, 15h38

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