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 :

capture d'un contenu d'une chaine


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Points : 356
    Points
    356
    Par défaut capture d'un contenu d'une chaine
    Bonjour à tous,

    J'imagine que c'est pas bien difficile, mais je n'arrive pas à trouver de solution à ça...

    J'ai un fichier dans lequel il y a des fonctions. J'aimerai lire ce fichier pour trouver une fonction précise, et analyser les lignes de cette fonction. Jusqu'ici tout va bien, j'y arrive...

    C'est maintenant que ça se corse pour moi... ma fonction est toujours sous cette forme :

    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
     
      $items['admin/content/aggregator'] = array(
        'title' => 'Feed aggregator',
        'description' => "Configure which content your site aggregates from other sites, how often it polls them, and how they're categorized.",
        'page callback' => 'aggregator_admin_overview',
        'access arguments' => array('administer news feeds'),
        'file' => 'aggregator.admin.inc',
      );
      $items['admin/content/aggregator/add/feed'] = array(
        'title' => 'Add feed',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('aggregator_form_feed'),
        'access arguments' => array('administer news feeds'),
        'type' => MENU_LOCAL_TASK,
        'parent' => 'admin/content/aggregator',
        'file' => 'aggregator.admin.inc',
      );
    Ce que j'aimerai, c'est pouvoir récupérer les lignes $items, et plus précisément la clé du tableau pour chacune de ces lignes... C'est à dire pour la première clé, récupérer admin/content/aggregator, puis ensuite admin/content/aggregator/add/feed, etc...

    Une regex me semble tout à fait appropriée, mais ça fait depuis longtemps que je me tente aux regex et ça me rebute à chaque fois... je dois pas avoir la logique de ces petites bêtes là... Une petite aide serait la bienvenue.

    D'avance merci pour vos pistes


    Thierry

  2. #2
    Membre éclairé Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Points : 663
    Points
    663
    Par défaut
    Salut,

    Je suis en train d'apprendre les regex alors je prend ça comme un exercice!

    J'ai essayé ceci qui fonctionne chez moi:

    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
     
    $pattern = '#\$items\[\'([a-z/]+)\'\]#';
     
    $subject = "\$items['admin/content/aggregator/add/feed'] = array(
        'title' => 'Add feed',
        'page callback' => 'drupal_get_form',
        'page arguments' => array('aggregator_form_feed'),
        'access arguments' => array('administer news feeds'),
        'type' => MENU_LOCAL_TASK,
        'parent' => 'admin/content/aggregator',
        'file' => 'aggregator.admin.inc',
      );
    ";
     
    if (preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER)) {
     
    print_r($matches);
    }
    Y a surement plus simple mais je suis nul en regex!
    Les idiots sont ceux qui ne posent jamais de question!

  3. #3
    Membre averti Avatar de titouille
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    353
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 353
    Points : 356
    Points
    356
    Par défaut
    Hello manuscle,

    Je te remercie pour ton aide. Vu que les "clés" peuvent être un peu plus complexes, ta regex ne correspondait pas exactement à mes besoins, mais je ne peux pas t'en vouloir car tu as fait selon mes exemples

    J'ai légèrement modifié la regex et voici le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^\$items\[\'([\w-%\#/]+)\'\]#
    En fait, voici une liste non exhaustive de ce à quoi les "clés" peuvent correspondre (extraites avec la regex modifiée) :

    aggregator
    aggregator/sources
    aggregator/categories
    aggregator/rss
    aggregator/opml
    aggregator/categories/%aggregator_category
    aggregator/categories/%aggregator_category/view
    aggregator/categories/%aggregator_category/categorize
    aggregator/categories/%aggregator_category/configure
    aggregator/sources/%aggregator_feed
    aggregator/sources/%aggregator_feed/view
    aggregator/sources/%aggregator_feed/categorize
    aggregator/sources/%aggregator_feed/configure
    admin/content/aggregator/edit/feed/%aggregator_feed
    admin/content/aggregator/edit/category/aggregator_category#test
    admin/content/aggregator/edit/category-12/aggregator_category#test
    Comme tu peux le voir, certains éléments de la clé peuvent contenir un signe "underscore" (soulignement) et certains contiennent également un signe pourcent ou dièse. Pour cette raison, j'ai rajouté quelques éléments entre crochets, ce qui donne : [\w-%\#/]

    \w pour 0-9A-Za-z_
    -%\#/ pour les caractères -, %, # et /

    (hé oui, j'ai tenté par moi-même de l'améliorer pour arriver à mon but )
    Après, il est possible que je doive encore la modifier parce que certaines clé seront encore plus complexes, mais tu m'as donné un bon point de départ pour arriver à mon but, un grand merci à toi pour ton aide !!

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/10/2007, 11h42
  2. [VB6] Parser XML contenu dans une chaine de caractère
    Par pegase06 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/09/2007, 11h35
  3. [ksh] Ne pas interpréter le contenu d'une chaine
    Par Anubis dans le forum Linux
    Réponses: 5
    Dernier message: 08/08/2007, 10h59
  4. Réponses: 12
    Dernier message: 15/12/2006, 00h06
  5. Réponses: 2
    Dernier message: 12/01/2004, 13h56

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