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 :

Regex récupération variable


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Regex récupération variable
    Bonjour à tous !

    Un problème qui peut paraître facile pour la plupart d'entre vous, mais je ne m'en sort pas !

    J'ai ce genre de code au milieu de plein de texte :

    a:1:{i:0;s:2:"15";}
    ou encore
    a:3:{i:0;s:3:"3.5";i:1;s:3:"4.9";i:2;s:3:"9.9";}

    Je souhaite récupérer les variables entre guillemet (15 dans le premier cas et 3.5, 4.9 et 9.9 dans le deuxième)

    J'ai pour cela utilisé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $contenttograbpricefrom = $news_desc;
    $output2 = preg_match_all('([0-9]{1-9})', $contenttograbpricefrom, $Contentprice);
    $Price = $Contentprice[1] [0]; // je sors le premier résultat de mon array
    J'ai fait de nombreux essais,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('((^["][0-9]{1-9}([,.][0-9]{0,2}["][;]))'
    par exemple, mais rien n'y fais, je n'arrive pas a récupérer ces valeurs.

    Les valeurs peuvent être sous la forme de [0-9]{1-9}([,.][0-9]{0,2} c'est à dire 0.0 à 999999.99 par exemple.

    Pouvez-vous m'indiquer ou je me trompe dans mon preg_match ?

    Merci !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tout simplement
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Merci de ta réponse. Malheureusement ce code me sort également les variable type width="150" et tous les texte qu'il y a dans des guillemets également présente dans la variable $news_desc (il y a du texte et une image dans cette variable en plus du code que j'ai spécifié dans mon premier message...).

    Du coup je suis obligé de faire $Price = $Contentprice[1] [7]; Pour obtenir un premier prix

    Je suis donc preneur s'il y a plus propre afin d'avoir uniquement les prix comme mentionné dans mon premier message car je dois faire une boucle dans les cas ou il y a plusieurs prix dans la variable (cas N°2). J'ai essayé d'intégrer mon [0-9]{1-9}([,.][0-9]{0,2} à ton code mais sans succès ...

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 131
    Points : 242
    Points
    242
    Par défaut
    Salut,

    J'ai modifié un peu la proposition de "Sabotage"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $str = 'a:3:{i:0;s:3:"3.5";i:1;s:3:"4.9";i:2;s:3:"9.9";}';
    preg_match_all('#:"(.*)";#U', $str, $regs);
    print_r($regs[1]);
    ?>

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Je suis donc preneur s'il y a plus propre afin d'avoir uniquement les prix comme mentionné dans mon premier message
    Probablement, mais comme tu n'indiques à aucun moment comment est réellement constituée ta chaine de départ, on ne peut pas t'aider plus !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Probablement, mais comme tu n'indiques à aucun moment comment est réellement constituée ta chaine de départ, on ne peut pas t'aider plus !
    Désolé. Il s'agit en faite d'un flux RSS (m'appartenant, je précise !) que je souhaite afficher d'un manière spécifique sur un autre de mes sites internet. J'ai bidouiller mon flux pour qu'apparaisse dans le content en plus de la description (du texte aléatoire donc), une image ainsi que mon prix qui apparaît dans une variable sous la forme a:1:{i:0;s:2:"15";}ou encore a:3{i:0;s:3:"3.5";i:1;s:3:"4.9";i:2;s:3:"9.9";}.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $news_desc = blablalblalalblal <img src="" alt="" width="" etc... + a:1:{i:0;s:2:"15";}
    a:3{i:0;s:3:"3.5";i:1;s:3:"4.9";i:2;s:3:"9.9";} est utilisé pour un produit ayant plusieurs prix (un tee shirt taille M à 4.9 € et en XXL à 9.9 par exemple).

    Citation Envoyé par selmouadin Voir le message
    Salut,

    J'ai modifié un peu la proposition de "Sabotage"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $str = 'a:3:{i:0;s:3:"3.5";i:1;s:3:"4.9";i:2;s:3:"9.9";}';
    preg_match_all('#:"(.*)";#U', $str, $regs);
    print_r($regs[1]);
    ?>
    Merci de ta réponse !

    Utiliser '#:"(.*)";#U' me sort un Parse error: syntax error, unexpected T_VARIABLE sur ma ligne 4 de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $Price = "";
    $contenttograbpricefrom = $news_desc;
    $output2 = preg_match_all(''#:"(.*)";#U'', $contenttograbpricefrom, $Contentprice);
    $Price = $Contentprice[1] [0];
    Je sais que je fais pas mal de "bidouille", je ne suis pas expert en la matière, désolé si ce n'est pas claire...

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Si tu as la main sur le flux RSS, je pense que le plus simple serait surtout d'encadrer la portion souhaitée dans une balise pour pouvoir la récupérer plus facilement.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Si tu as la main sur le flux RSS, je pense que le plus simple serait surtout d'encadrer la portion souhaitée dans une balise pour pouvoir la récupérer plus facilement.
    Ça me semble compliqué dans le sens ou je ne maitrise pas plus que ça non plus les flux RSS (j'en ai chi*r pour en arriver jusque là !)

    J'utilise Wordpress et j'ai dû insérer des fonctions dans le fichier function.php de mon thème pour parvenir au point ou j'en suis, c'est à dire un <content> de mon flux avec image et variable prix en plus du contenu :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    // THIS INCLUDES THE THUMBNAIL IN OUR RSS FEED
    function insertThumbnailRSS($content) {
    global $post;
    if ( has_post_thumbnail( $post->ID ) ){
    $content = '' . get_the_post_thumbnail( $post->ID, 'thumbnail', array( 'alt' => get_the_title(), 'title' => get_the_title(), 'style' => 'float:right;' ) ) . '' . $content. ''. $price;
    }
    return $content;
    }
    add_filter('the_excerpt_rss', 'insertThumbnailRSS');
    add_filter('the_content_feed', 'insertThumbnailRSS');
     
     
    function fields_in_feed($content) {
        if(is_feed()) {
            $post_id = get_the_ID();
    	$meta = get_post_custom($post_id);
    	$price = $meta["mp_price"][0];
            $output = '
    <div>
    ';
            $output .= '
    <strong>Prix :</strong> ' . $price . '
    ';
     
            $output .= '</div>
    ';
            $content = $content.$output;
        }
        return $content;
    }
    add_filter('the_content','fields_in_feed');
    Bref, j'ai la main, mais pas totalement

Discussions similaires

  1. appel de fonction sans récupération variable
    Par mussara dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2006, 12h10
  2. Problèmes récupération variable
    Par bouchette63 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/06/2006, 11h44
  3. PHP récupération variables
    Par marie4449 dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2006, 21h14
  4. [MySQL] Problème récupération variable pour requête SQL !!
    Par mLk92 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2006, 17h08
  5. Réponses: 9
    Dernier message: 15/03/2006, 11h46

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