Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2008, 13h44   #1
Membre habitué
 
Homme
Inscription : octobre 2003
Messages : 255
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2003
Messages : 255
Points : 103
Points : 103
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 :
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 :
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>
D4rK_C0uaK6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2008, 16h19   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 571
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 571
Points : 2 529
Points : 2 529
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
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 13h45   #3
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
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 :
1
2
$xml = preg_replace('/<cheminFer>.*?<\/cheminFer>/s', $xml, $fichier);
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2008, 18h52   #4
Membre habitué
 
Homme
Inscription : octobre 2003
Messages : 255
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2003
Messages : 255
Points : 103
Points : 103
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.
D4rK_C0uaK6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h04.


 
 
 
 
Partenaires

Hébergement Web