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 :

Preg_split decoupage de chaine


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 74
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    N'oublie pas les délimiteurs de ta regex, ce qui te permet d'ajouter le modificateur U (fondamental dans ton cas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #<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 ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 74
    Par défaut
    Merci de ta réponse aussi rapide
    j'ai fait cela finalement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $tab=preg_split("#<p id=(.*)#Uis", $content);
    J'obtient ceci :

    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
     
    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

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    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.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 74
    Par défaut
    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

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    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.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 74
    Par défaut
    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 ?

Discussions similaires

  1. Problème avec un decoupage de chaine
    Par Xenon03 dans le forum ASP
    Réponses: 5
    Dernier message: 17/04/2009, 15h39
  2. Decoupage de chaine
    Par julinho99 dans le forum Langage
    Réponses: 2
    Dernier message: 02/10/2008, 13h07
  3. [POO] Decoupage de chaine et objet
    Par bobspike dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/06/2008, 15h32
  4. decoupage de chaine / separateurs
    Par Gougnaf dans le forum C
    Réponses: 4
    Dernier message: 25/03/2008, 10h26
  5. quel est le decoupage de chaine le + rapide
    Par jerome86600 dans le forum C++
    Réponses: 21
    Dernier message: 20/07/2006, 18h30

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