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 :

Récupération des résultats de preg_match


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Récupération des résultats de preg_match
    Salut à tous,

    Je souhaites parcourir un fichier, s'il existe dans ce cas la je vérifie si telle chaîne de caractère y est présente, si oui je veux afficher ce qu'il y a après cette chaîne, jusqu'à arriver à une autre chaîne de caractère.
    Le problème étant que j'ai des exceptions, la chaîne est bien présente mais ne se termine pas toujours par la même chaîne de caractère. Or je ne sais pas comment inclure un ou dans ma fonction.

    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
    $fichier = 'C:\\Desktop\repip\blablabla.html'; 
        if ( (file_exists($fichier)) && (is_readable($fichier)) ){ 
            $text = file_get_contents($fichier);
            $chainerecherchee = "AAA:";
            if (strstr($text, $chainerecherchee)){
                preg_match( '#AAA:(.*);BBB#', $text, $match);
                echo $match[1];
            }
            else{
                if (strstr($text, $chainerecherchee)){
                    preg_match( '#AAA:(.*)CCC#', $text, $match);
                    echo $match[1];
                }
                else{
                }
            }
        }
        else 
        { 
        }
    J'ai donc essayé d'inclure un if dans un if pour si le premier cas (ce termine par BBB) est faux je rentre dans le deuxième if pour vérifier si ça se termine par CCC.

    Lorsque j'arrive au cas ou ça se termine par BBB, aucun souci.
    Lorsque j'arrive au cas ou ça se termine par CCC j'ai une erreur du type :

    Notice: Undefined offset: 1 in C:\\Desktop\repip\blablabla.php on line 7
    Si quelqu'un pouvait m'aider

    Merci.
    Dernière modification par Invité ; 17/04/2015 à 15h21.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Déjà, même si ce n'est pas formellement interdit, tu devrais éviter de mettre des accents dans tes noms de variables...

    Ensuite, où sont les délimiteurs dans ton expression ?

  3. #3
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Et si tu ne mets rien dans tes else tu n'est pas obligé de juste mettre:


    Plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (strstr($text, $chainerecherchée)){
                preg_match( '#AAA:(.*);#BBB', $text, $match);
                echo $match[1];
            }
            else{
                if (strstr($text, $chainerecherchée)){
                    preg_match( '#AAA:(.*)CCC#U', $text, $match);
                    echo $match[1];
                }
           }

  4. #4
    Invité
    Invité(e)
    Par défaut
    Déjà merci de vos réponses rapides

    Bovino :

    Les accents dans les noms de variables c'était juste pour l'exemple, désolé.
    Les délimiteurs sont AAA et BBB dans le premier cas, AAA et CCC dans le deuxième cas.


    Kreepz :

    J'ai essayé ta solution mais j'ai toujours le même problème

  5. #5
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Je ne sais pas si ça marche:

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (strstr($text, $chainerecherchée)){
    	if(preg_match( '#AAA:(.*);#BBB', $text, $match)) {
    		echo $match[1];
    	} else {
    		if(preg_match( '#AAA:(.*)CCC#U', $text, $match)) {
    			echo $match[1];
    		}
    	}
    }

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Les délimiteurs sont AAA et BBB dans le premier cas, AAA et CCC dans le deuxième cas.

    Ce n'est pas ça qu'on appelle des délimiteurs. Regarde le lien dans ma première réponse (oui, je sais, les liens ne sont pas très visibles sur le forum...) pour en savoir plus.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Kreepz
    Non, il y a toujours ce problème undefinned offset
    Dernière modification par Bovino ; 17/04/2015 à 15h24. Motif: Inutile de citer un message pour y répondre !

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bovino
    Ici mes délimiteurs sont donc bien les #
    Dernière modification par Bovino ; 17/04/2015 à 15h24. Motif: Inutile de citer un message pour y répondre !

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Dans ce cas, BBB c'est supposé correspondre à quoi dans ton expression ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    A la "limite" de fin.
    En gros je commence à afficher après AAA jusqu'à avant BBB. Cela fonctionne bien, mais lorsque cela commence par AAA et se termine par CCC le code affiche une erreur undeffined offset.

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu n'as manifestement pas lu avec suffisamment d'attention ce qui est dit dans la doc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match( '#AAA:(.*);#BBB', $text, $match)
    Dans cette expression, si # est le délimiteur comme tu le penses, alors BBB se trouve en dehors de ton pattern, ce qui n'est pas réellement ce qu'il faut faire.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Oui j'ai remarqué que j'avais fait une faute de frappe dans mon exemple mais mon fichier réel ne contient pas cette faute de frappe.
    Et donc le problème ne vient pas de la car pour le cas BBB ça fonctionne, le problème vient du cas ou je commence bien par AAA mais je finis pas par BBB mais CCC.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Problème résolu !
    C'était en fait une imbrication de plusieurs if :
    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
     
    $fichier = 'C:\\Desktop\repip\blablabla.html'; 
        if ( (file_exists($fichier)) && (is_readable($fichier)) ){
            $text = file_get_contents($fichier);
            $abc = "AAA:";
            if (strstr($text, $abc)){
                if(preg_match( '#AAA:(.+)BBB#', $text, $match )){
                    echo $match[1];
                }
                else{
                    preg_match( '#AAA:(.+)CCC#U', $text, $match );
                    echo $match[1];
                }
            }
            else{
            }
        }
        else { 
        }

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

Discussions similaires

  1. Récupération des résultats des méthodes dans un service WCF
    Par est09 dans le forum Windows Communication Foundation
    Réponses: 16
    Dernier message: 02/04/2009, 16h44
  2. [RegEx] récupération des résultats de preg_match_all
    Par Dharius dans le forum Langage
    Réponses: 2
    Dernier message: 16/10/2008, 14h48
  3. [EJBQL] [EJB3] [Junit] Récupération des résultats d'un select
    Par nramariavelo dans le forum Java EE
    Réponses: 1
    Dernier message: 04/10/2006, 16h22
  4. Réponses: 2
    Dernier message: 21/05/2006, 14h02
  5. Réponses: 2
    Dernier message: 29/03/2006, 09h38

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