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 :

Utiliser plusieurs expressions regulières [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Points : 166
    Points
    166
    Par défaut Utiliser plusieurs expressions regulières
    Bonjour peut on exécuter plusieurs expressions régulière dans un même fichier ou en cascade ? car j'ai un problème dans mon script apparemment la deuxième expression...


    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
    <?php
    //Stocker le fichier xml dans une variables pour chercher et remplacer
    $fichier = file_get_contents("catalogues/".$_POST['nomCata']);//"cata1.xml"
     
    $pattern = '/<page[0-9]+>(.*)<\/page[0-9]+>/U';
    $ok = preg_match_all($pattern, $fichier, $matches);
    if($ok > 0)
    {            
       //But : Supprime à partir de l'indice compris autant de page que $nbpageSupprimer
     
       //Reconsituter le nom de la balise  <pagex></pagex>
    	$page = $_POST['indice'];	
    	$numPage = split("-", $page);//PageN
    	$indice = str_replace("Page", "", $numPage[0]);
     
       $nbPageSupprimer = $_POST['nbSuppression'];//1;//Paramètres envoyés par flash
       $nbPage = count($matches[1]);
     
     
       if($indice == 1)
       {
          $result = array_slice($matches[1], $nbPageSupprimer);
       }
     
       if( ($indice + $nbPageSupprimer) >= $nbPage)
       {      	  		  
    	  $result = array_slice($matches[1], 0, $indice);     
       }
     
       if( ($indice + $nbPageSupprimer) < $nbPage)
       {      	  		  	 
    	  $output = array_slice($matches[1], 0, $indice);//Début du tableau retourné par expReg               
    	  $iDecoupe2 = $indice + $nbPageSupprimer;
    	  $output2 = array_slice ($matches[1], $iDecoupe2);//Fin du tableau retourné par expReg         
    	  $result = array_merge($output, $output2);//Fusion des tableaux         
       }
     
       //Sur chaque entrée du tableau ajouter les balsies <page></page>
       $xml = "<cheminFer>\r\n";
       foreach($result as $key => $value)   {
    	  $xml .= "\t<page".($key).">".$value."</page".($key).">\r\n";
       }
       $xml .= "</cheminFer>";      
     
       //Récrire le XML  
       $xml = preg_replace('/<cheminFer>.*<\/cheminFer>/', $xml, $fichier);   	  
       $fp = fopen("catalogues/cataaaaa.xml", "w");
       fwrite($fp, $xml);
       fclose($fp);//fermeture du fichier .xml      
     
       header("location: gererCataPresse.php?xml=".$_POST['nomCata']);       
    }
    ?>
    mon fichier XML :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <catalogue>
    <nom>laeti</nom>
    <dateCreation>18-1-2008</dateCreation>
    <affichePrix>avec</affichePrix>
    <afficheDate>avec</afficheDate>
    <afficheLieu>avec</afficheLieu>
    <afficheSommaire>avec</afficheSommaire>
    <afficheMotCle>avec</afficheMotCle>
    <nombreRubrique>2</nombreRubrique>
    <nombreTotalPage>16</nombreTotalPage>
    <cheminFer>
    	<page0>Dos 1ère de couverture</page0>
    	<page1>Vide</page1>
    	<page2>Sommaire</page2>
    	<page3>Vide</page3>
    	<page4>Mots Clés</page4>
    	<page5>Table des Matières</page5>
    	<page6>Vide</page6>
    	<page7><rubrique>Rubrique 1</rubrique></page7>
    	<page8>Conditions générales de ventes</page8>
    	<page9>Vide</page9>
    	<page10>Edito</page10>
    	<page11>Vide</page11>
    	<page12>Vide</page12>
    	<page13><rubrique>Rubrique 2</rubrique></page13>
    	<page14>Vide</page14>
    	<page15>Vide</page15>
    	<page16>Vide</page16>
    	<page17>Dos dernière de couverture</page17>
    </cheminFer>
    </catalogue>
    Il arrive pas a trouver les balises <cheminFer>...</cheminFer>

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, pour faire du traitement sur du XML, tu as plusieurs méthodes disponibles :


    Et la FAQ : http://php.developpez.com/faq/?page=xml

    Ca sera mieux que les expressions régulières

    Bon développement

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 285
    Points : 11 740
    Points
    11 740
    Par défaut
    Citation Envoyé par D4rK_C0uaK6
    Il arrive pas a trouver les balises <cheminFer>...</cheminFer>
    Il faut que tu te mettes en mode "single line" avec le modificateur /s. S'il peut y avoir plusieurs balises <cheminFer>, il faut également que tu utilises une étoile paresseuse *? à la place de ton étoile gourmande * (si ce n'est pas le cas, il vaut mieux garder l'étoile gourmande qui est plus performante).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $xml = preg_replace('/<cheminFer>.*?<\/cheminFer>/s', $xml, $fichier);

  4. #4
    Membre habitué
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Points : 166
    Points
    166
    Par défaut
    Merci déjà pour vos réponses.

    Ben simplexml et dom c'est en php5 j'ai que php4 ^^
    donc j'ai pensé aux expressions regulieres mais je maitrise pas du tout les modificateurs.

    Donc oui <cheminFer> est unique dans le xml j'ai mis .* car dedans je peux avoir du texte, des balises, des chiffres. mais tu as raison autant la rendre paresseuse.

    PS : je vais quand même aller voir la faq.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/11/2007, 16h04
  2. [C#] Utiliser plusieurs formulaires serveur
    Par Anomaly dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/10/2003, 20h38
  3. [struts] utiliser plusieurs fichiers properties
    Par jaimepasteevy dans le forum Struts 1
    Réponses: 7
    Dernier message: 03/10/2003, 18h02
  4. Peut-on utiliser plusieurs canaux DMA simultanément ?
    Par le mage tophinus dans le forum Assembleur
    Réponses: 18
    Dernier message: 26/09/2003, 10h18
  5. Réponses: 5
    Dernier message: 11/06/2002, 16h21

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