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 07/04/2006, 15h38   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 74
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 74
Points : 14
Points : 14
Par défaut Preg_split decoupage de chaine

Bonjour à vous tous je désire découper un fichier.xml

Mon fichier xml est composé de la maniere suivante :

<p id="45"> <toto>32</toto> </p>

<p id="57"> <toto>lihjoiu</toto> </p>

j'ai essayé cela :
Code :
1
2
3
4
5
 
$file="toto.xml";
$myFile=fopen($file,"r+");
$content=fread($myFile,filesize($file));
$tab=preg_split("<p id(.*)\</p>", $content);
je voudrai récuperer un tableau de la forme
$tab[0]=<p id="45"> <toto>32</toto> </p>
$tab[1]=<p id="57"> <toto>lihjoiu</toto></p>

Le probleme c'est que j'ai des balises <property></property>

Merci de votre aide les ami(e)s
Dargos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2006, 15h48   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

N'oublie pas les délimiteurs de ta regex, ce qui te permet d'ajouter le modificateur U (fondamental dans ton cas) :
Code :
#<p id="([0-9]+)">(.*)</p>#U
Cette regex fonctionnera très mal si tu imbriques les blocs <p>

J'imagine que si PHP ne crise pas en voyant ton expression, c'est qu'il considère "<" et ">" comme étant les délimiteurs, auquel ta regex est équivalente à :

[Edit] Je t'ai très mal répondu car tu ne dis rien de la balise property... Où se situe-t-elle ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2006, 16h06   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 74
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 74
Points : 14
Points : 14
Merci de ta réponse aussi rapide
j'ai fait cela finalement

Code :
1
2
 
$tab=preg_split("#<p id=(.*)#Uis", $content);
J'obtient ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Array
(
    [0] => <?xml version="1.0" encoding="ISO-8859-1"?>
<list date="2006-03-29 05:59:31" language="fr" num_hotels="11846">
 
    [1] => "12095"> <name>Cambon</name> <address>3, rue Cambon</address>  <images>
<image num="1">
<imageURL>http://www.y.jpg</imageURL>
<thumbURL>http://www.s.jpg</thumbURL>
<title>Extérieur- entrée</title>
</image>
</images> </p>
 
     [2] => "12158"> <name>Cambon</name> <address>3, rue Cambon</address>  <images>
<image num="1">
<imageURL>http://www.y.jpg</imageURL>
<thumbURL>http://www.s.jpg</thumbURL>
<title>Extérieur- entrée</title>
</image>
</images> </p>
je voudrai finir par avoir

$tab[12095]=<name>Cambon</name> <address>3, rue Cambon</address> <images>
<image num="1">
<imageURL>http://www.y.jpg</imageURL>
<thumbURL>http://www.s.jpg</thumbURL>
<title>Extérieur- entrée</title>
</image>
</images>
$tab[12158]=<name>Cambon</name> <address>3, rue Cambon</address> <images>
<image num="1">
<imageURL>http://www.y.jpg</imageURL>
<thumbURL>http://www.s.jpg</thumbURL>
<title>Extérieur- entrée</title>
</image>
</images>

Un tableau associatif quoi
a ton avis c'est quoi le plus simple pour arrivé a un tel resultat
Dargos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2006, 16h23   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Le souci est que tu as coupé l'expression que je t'ai proposé...
Cela fait que ton .* n'a pas de délimiteur de fin et que cela ne fonctionne pas comme tu l'espères.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2006, 16h46   #5
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 74
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 74
Points : 14
Points : 14
J'ai essayé tes expressions régulieres mais le découpage ne s'arrete pas a la balise </p>
j'obtient un tableau $tab avec tout mon fichier xml à l'indice 0
il s'arrete pas quoi

d'ailleur elle est ^pas bonne cete expression il faut rajouté des \ avant les "

#<p id="([0-9]+)">(.*)</p>#U => #<p id=\"([0-9]+)\">(.*)</p>#U

et l'expression simplifié ne s'arrete pas non plus

Tu vois d'ou ca vient je test encore d'autres expressions,merci
Dargos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2006, 17h14   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Bien sûr que tu auras tout à l'indice zéro, puisque ton fichier XML est composé de balises <p>...
Regarde les autres indices du tableau de résultats.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2006, 10h32   #7
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 74
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 74
Points : 14
Points : 14
J'ai regardé dans les autres indices mais il ya rien

J'ai une question vaut il mieux dans mon cas utiliser preg_split ou split ?
Dargos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h16.


 
 
 
 
Partenaires

Hébergement Web