Problème pour parser du contenu en PHP

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par ben64btz, 2 Février 2010.

  1. ben64btz
    ben64btz WRInaute discret
    Inscrit:
    9 Mai 2006
    Messages:
    179
    J'aime reçus:
    0
    Bonjour à tous,

    Je souhaite parser du contenu de type texte via un script PHP qui ne ressort QUE les chaines de caractères comprises entre deux chaines de caractères.
    Exemple:

    dans la chaine: "toto toto toto r tutu z toto toto" je souhaite ressortir tout ce qui se trouve entre "r" et "z"
    j'ai donc mis en place une petite regex

    Code:
    <?php
    $chaine = "toto toto toto r tutu z toto toto";
    $chaine = preg_replace('^#(.*)r(.*)z(.*)#$i', '$2', $chaine);
    echo $chaine;
    ?>
    Mais malheureusement ça ne fonctionne pas, quelqu'un peut-il m'aider ? je ne suis pas certain qu'il faille prendre preg_replace d'ailleurs.
    Merci d'avance
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    preg_match est probablement plus indiqué, mais c'est surtout ta regexp qui pose problème... les ^ et $ devraient être à l'intérieur des # (qui servent à encadrer la regex elle-même, en fait, et séparer les flags qui se trouvent après). Et si tu n'as pas besoin de certains bouts, ne mets pas de (), ça ne les capturera pas... Et comme tu veux ignorer ce qu'il y a au début ou à la fin, tu peux carrément les virer avec les ^ et $

    Donc '#r(.*)z#i' devrait largement suffire (note que ça ne tient pas compte du fait que r ou z soient au milieu d'un mot ou pas).

    Et http://php.net/manual/en/function.preg-match.php devrait mieux faire l'affaire.

    Jacques.
     
  3. ben64btz
    ben64btz WRInaute discret
    Inscrit:
    9 Mai 2006
    Messages:
    179
    J'aime reçus:
    0

    Merci beaucoup de ton aide Jacques,
    Oui effectivement j'ai fais une erreur dans mon exemple, d'habitude du place correctement les ^ et $ :oops:
    Par contre la méthode que tu m'indique fonctionne mais ne semble pas correspondre à mon besoin.
    En effet preg_match me retourne un booléen selon que la chaine de caractère existe ou non, mon but à moi est justement d'isoler cette chaine de caractères du reste du texte.
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 203
    J'aime reçus:
    365
    Il retourne un booléen, mais c'est le (3°) paramètre "$matches" qui t'intéresse dans ce cas.
     
  5. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    c'est quoi ressortir pour toi ? supprimer le contenu ou le récupérer ?
     
  6. ben64btz
    ben64btz WRInaute discret
    Inscrit:
    9 Mai 2006
    Messages:
    179
    J'aime reçus:
    0
    Oui ressortir c'est bien récupérer uniquement le contenu de ma parenthèse et pas le contenu présent avant ni après
     
  7. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    donc c'est bien le preg_match qui va t'aider, en notifiant la variable de retour dans laquelle tu vas récupérer tes données sous forme de tableau
     
  8. ben64btz
    ben64btz WRInaute discret
    Inscrit:
    9 Mai 2006
    Messages:
    179
    J'aime reçus:
    0
    Ok ça marche merci à tous !! :)
     
  9. ben64btz
    ben64btz WRInaute discret
    Inscrit:
    9 Mai 2006
    Messages:
    179
    J'aime reçus:
    0
    Bon si vous tombez par hasard sur ce topic, voici la réponse :)

    Code:
    <?php
    $subject = "toto toto toto r tutu z toto toto";
    $pattern = '/r (.*) z/';
    preg_match($pattern, $subject, $matches);
    echo $matches[1];
    ?>
     
  10. ben64btz
    ben64btz WRInaute discret
    Inscrit:
    9 Mai 2006
    Messages:
    179
    J'aime reçus:
    0
    Bon si vous tombez par hasard sur ce topic avec la même problématique, voici la réponse :)

    Code:
    <?php
    $subject = "toto toto toto r tutu z toto toto";
    $pattern = '/r (.*) z/';
    preg_match($pattern, $subject, $matches);
    echo $matches[1];
    ?>
     
  11. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    et si tu veux ne pas tenir compte de la casse (maj/min), ajoute un "i" au masque
    Code:
    $pattern = '/r (.*) z/i';
    
     
  12. ben64btz
    ben64btz WRInaute discret
    Inscrit:
    9 Mai 2006
    Messages:
    179
    J'aime reçus:
    0
  13. ben64btz
    ben64btz WRInaute discret
    Inscrit:
    9 Mai 2006
    Messages:
    179
    J'aime reçus:
    0
    ok maintenant un second problème avec la même regex.
    J'aimerai cette fois, non pas retourner la première occurrence trouvée dans la chaine, mais TOUTES les occurrences de la chaine.

    si on reprend la regex précédente on a:

    Code:
    <?php
    $subject = "toto toto toto r tutu z toto toto r voiture z r chat z";
    $pattern = '/r (.*) z/i';
    preg_match($pattern, $subject, $matches);
    echo $matches[1];
    ?>
    Mais ici $matches[1] ne retourne que tutu.
    Ce que j'aimerai c'est que la regex me retourne tutu voiture chat

    J'ai cherché sur le net mais je ne trouve pas la solution, quelqu'un peut_il m'aider s'il vous plait :roll:
    Merci d'avance :)
     
  14. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 018
    J'aime reçus:
    133
Chargement...
Similar Threads - Problème parser contenu Forum Date
Problème pour parser du xml Développement d'un site Web ou d'une appli mobile 26 Février 2015
Problème feedparser et nouvelle page phpbb Développement d'un site Web ou d'une appli mobile 14 Janvier 2010
problème utilisation feedparser Développement d'un site Web ou d'une appli mobile 3 Janvier 2010
DOM Parser (probleme) Développement d'un site Web ou d'une appli mobile 31 Décembre 2009
Problème regexp pour parser fichier html Développement d'un site Web ou d'une appli mobile 28 Décembre 2006
Probleme tag sur Google tag manager Demandes d'avis et de conseils sur vos sites Jeudi à 13:49
Probleme Tag sur Google Tag Manager Google Analytics 18 Novembre 2022
Gros problème sur la profondeur de mes pages Problèmes de référencement spécifiques à vos sites 30 Septembre 2022
Problème de htaccess chez Ionos URL Rewriting et .htaccess 12 Septembre 2022
Problème sur jquery avec fonction asynchrone Développement d'un site Web ou d'une appli mobile 6 Septembre 2022
Problème de crawl et d'indexation Crawl et indexation Google, sitemaps 1 Septembre 2022
WordPress Problème affichage style avec Elementor (titre, bordures, separateur) Administration d'un site Web 8 Août 2022
Problème d'indexation de backlinks Débuter en référencement 24 Juillet 2022
Problème d'indexation de backlinks Problèmes de référencement spécifiques à vos sites 21 Juillet 2022
Probleme de visibilité de ma page Facebook Facebook 5 Juillet 2022
problème avec le développeur Droit du web (juridique, fiscalité...) 22 Juin 2022
Problème désindexation des pages de Google Débuter en référencement 21 Juin 2022
Problème d'indexation de pages sur Google Problèmes de référencement spécifiques à vos sites 31 Mai 2022
problème de redirection non souhaitée Administration d'un site Web 28 Avril 2022
Problème d'indexation Produits Prestashop Crawl et indexation Google, sitemaps 28 Avril 2022