Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Invité de passage
    Étudiant
    Inscrit en
    mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 24

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2009
    Messages : 14
    Points : 4
    Points
    4

    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 :
    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 :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    20 682
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 20 682
    Points : 27 006
    Points
    27 006

    Par défaut

    Tout simplement

  3. #3
    Invité de passage
    Étudiant
    Inscrit en
    mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 24

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2009
    Messages : 14
    Points : 4
    Points
    4

    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 habitué
    Homme Profil pro Said ELMOUADIN
    Développeur Web
    Inscrit en
    mai 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Nom : Homme Said ELMOUADIN
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2012
    Messages : 66
    Points : 100
    Points
    100

    Par défaut

    Salut,

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

    Code :
    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
    Responsable Développement Web

    Avatar de Bovino
    Homme Profil pro Didier Mouronval
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    21 896
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier Mouronval
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : juin 2008
    Messages : 21 896
    Points : 80 914
    Points
    80 914

    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
    Invité de passage
    Étudiant
    Inscrit en
    mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 24

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2009
    Messages : 14
    Points : 4
    Points
    4

    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 :
    $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 :
    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 :
    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
    Responsable Développement Web

    Avatar de Bovino
    Homme Profil pro Didier Mouronval
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    21 896
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier Mouronval
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : juin 2008
    Messages : 21 896
    Points : 80 914
    Points
    80 914

    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
    Invité de passage
    Étudiant
    Inscrit en
    mai 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 24

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2009
    Messages : 14
    Points : 4
    Points
    4

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •