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 :

Regex sur le contenu d'un fichier [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Points : 105
    Points
    105
    Par défaut Regex sur le contenu d'un fichier
    Bonjour à tous.
    Je viens de découvrir les regex, et ça à l'air très puissant, mais seulement quand ça veux bien marcher : je n'arrive pas à comprendre le comportement du remplacement effectué par ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    // Retrouve le texte de la page
    $page = file_get_contents("page_config.html");
     
    echo ('page : '.htmlentities($page).'</br>'.'</br>');
    for($i=1; $i<10; $i++) {
    	echo ('modif '.$i.': '.htmlentities(preg_replace ('#.{'.$i.'}(.*)#', '$1', $page)).'</br>'.'</br>');
    }
    ?>
    Le fichier lu contient :
    Et le résultat pour le moins original est :
    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
    page : <html> <head>
     
    modif 1: html> head>
     
    modif 2: tml> ead>
     
    modif 3: ml> ad>
     
    modif 4: l> d>
     
    modif 5: > >
     
    modif 6:
     
    modif 7:
     
    modif 8: <html> <head>
     
    modif 9: <html> <head>
    Quelqu'un saurait expliquer ce qui ne va pas?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par _Michel Voir le message
    Quelqu'un saurait expliquer ce qui ne va pas?
    pour ça il faudrait d'abord que tu nous dises ce que tu cherches à obtenir

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Points : 105
    Points
    105
    Par défaut
    Heu, c'est vrai, je pensais que c'était évident.
    Je cherche :
    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
    page : <html> <head>
     
    modif 1: html> <head>
     
    modif 2: tml> <head>
     
    modif 3: ml> <head>
     
    modif 4: l> <head>
     
    modif 5: > <head>
     
    modif 6:  <head>
     
    modif 7: <head>
     
    modif 8: head>
     
    modif 8: ead>

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    Par défaut, le caractère . ne reconnait pas les retours à la ligne (entre autres).
    Il faut spécifier le mode "dot match all", ce qui est fait par l'option s.

    Un peu de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    // Retrouve le texte de la page
    $page = "<html>
    <head>";
     
    echo ('page : '.htmlentities($page)."\n"."\n");
    for($i=1; $i<10; $i++) {
    	$myPattern = sprintf('/.{%d}(.*)/s', $i);
    	echo ($i.': '.preg_replace ($myPattern, '$1', $page)."\n");
    }
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Points : 105
    Points
    105
    Par défaut
    Ah c'est donc ça. Tout s'explique maintenant.
    Merci beaucoup.

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

Discussions similaires

  1. [Applet] Effacer le contenu d'un fichier texte sur disque dur
    Par poulette3000 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 31/07/2007, 09h39
  2. Réponses: 3
    Dernier message: 26/02/2007, 10h49
  3. Réponses: 1
    Dernier message: 19/12/2006, 11h18
  4. Afficher le contenu d'un fichier Excel sur la même page
    Par AliochaBada dans le forum Langage
    Réponses: 2
    Dernier message: 08/12/2006, 17h43

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