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 :

Rechercher et mettre en tableau array des chaines commençant par "@_@_" et finissant par "_ù_ù" [RegEx]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2018
    Messages : 29
    Points : 8
    Points
    8
    Par défaut Rechercher et mettre en tableau array des chaines commençant par "@_@_" et finissant par "_ù_ù"
    Bonjour,

    je recherche un moyen de balayer un texte avec les expressions régulières (assez complexe à écrire pour un novice), et placer toutes les occurrences trouvées dans un array.

    Je m'explique:
    J'ai dans un texte html des balises vidéo qui sont toutes comme celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="info" id="@_@_gyLJgfQKea_ù_ù"></div>
    Et derrière ceci un code qui lorsqu'il rencontre cette portion de code isole la suite de lettres se trouvant entre "@_@_" et "_ù_ù", donc dans cet exemple "gyLJgfQKea", et affiche dans une iframe la vidéo gyLJgfQKea.mp4.

    Mon problème, c'est que cela ne fonctionne qu'avec une seule vidéo.

    J'ai besoin de pouvoir isoler les X séquences de 10 caractères minuscules et majuscules, et faire une boucle de mon code du nombre de fois que cette séquence est rencontrée.

    Je suis incapable d'écrire l'expression régulière qui va bien.

    Merci d'avance pour toute aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    preg_match_all()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = '/@_@_([a-zA-Z]+)_ù_ù/Ui';
    ex.
    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
    <?php
    $string = <<<EOT
    <div class="info" id="@_@_gyLJgfQKea_ù_ù"></div>
    <div class="info" id="@_@_msqSQdfsdf_ù_ù"></div>
    <div class="info" id="@_@_FDSgFDSdhg_ù_ù"></div>
    <div class="info" id="@_@_ADgrelGdPE_ù_ù"></div>
    EOT;
     
    $pattern = '/@_@_([a-zA-Z]+)_ù_ù/Ui';
     
    $find = preg_match_all( $pattern, $string, $matches );
     
    if( !empty($matches) )
    {
      var_dump( $matches[1] );
    } else {
      echo 'Rien trouvé...';
    }

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2018
    Messages : 29
    Points : 8
    Points
    8
    Par défaut Merci jreaux62 !
    Bonjour et un grand merci jreaux62,

    Toutefois en me cassant le cerveau assez tard cette nuit, et grâce à ce cours :
    http://g-rossolini.developpez.com/tu...nctions#LIII-2

    j'avais réussi à bricoler 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
    22
    23
    24
    25
    26
    <?php
    $pattern  = '#@_@([^"]+)(.*)_ù_ù#Usi';
    $subjects = array();
    $subjects[] = '<div class="info" id="@_@_gyLJgfQKea_ù_ù"></div>
    <div class="info" id="@_@_msqSQdfsdf_ù_ù"></div>
    <div class="info" id="@_@_FDSgFDSdhg_ù_ù"></div>
    <div class="info" id="@_@_ADgrelGdPE_ù_ù"></div>';
     
    foreach($subjects as $subject)
    {
        $matches = array();
     
        if(preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER))
        {
            echo "<pre>";
            print_r($matches);
            echo "</pre>";
        } 
        else
        {
        echo "Non";
        }
        echo "</li>";
    }
    echo "</ul>";
    ?>
    Qui me donne 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Array
    (
        [0] => Array
            (
                [0] => @_@_gyLJgfQKea_ù_ù
                [1] => _
                [2] => gyLJgfQKea
            )
     
        [1] => Array
            (
                [0] => @_@_msqSQdfsdf_ù_ù
                [1] => _
                [2] => msqSQdfsdf
            )
     
        [2] => Array
            (
                [0] => @_@_FDSgFDSdhg_ù_ù
                [1] => _
                [2] => FDSgFDSdhg
            )
     
        [3] => Array
            (
                [0] => @_@_ADgrelGdPE_ù_ù
                [1] => _
                [2] => ADgrelGdPE
            )
     
    )
    Je préfère votre solution qui a l'air plus direct puisqu'elle renvoi ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => gyLJgfQKea [1] => msqSQdfsdf [2] => FDSgFDSdhg [3] => ADgrelGdPE )
    Toutefois, je bloque désormais pour arriver à faire une boucle (ici 4 fois) ou je pourrais utiliser cette variable...
    Le code qui génère l'iframe redimensionnée à la résolution de la vidéo est un peu long, mais admettons que je veuille faire une boucle de tous les résultats pour créer un simple lien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    < a href="$variable0"></a>
     < a href="$variable1"></a>
     < a href="$variable2"></a>
     < a href="$variable3"></a>
    Comment faire s'il vous plait?

    Un gros MERCI par avance

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Janvier 2018
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Janvier 2018
    Messages : 29
    Points : 8
    Points
    8
    Par défaut
    C'est bon, j'ai trouvé!!

    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
    <?php
    $string = <<<EOT
    <div class="info" id="@_@_gyLJgfQKea_ù_ù"></div>
    <div class="info" id="@_@_msqSQdfsdf_ù_ù"></div>
    <div class="info" id="@_@_FDSgFDSdhg_ù_ù"></div>
    <div class="info" id="@_@_ADgrelGdPE_ù_ù"></div>
    EOT;
     
    $pattern = '/@_@_([a-zA-Z]+)_ù_ù/Ui';
     
    $find = preg_match_all( $pattern, $string, $matches );
     
    if( !empty($matches) )
    {  
        foreach ($matches[1] as $valeur) {
        echo "<a href=\"".$valeur."\">$valeur</a><br>";
    }
     
    } else {
      echo 'Rien trouvé...';
    }
    ?>
    Merci mille fois tout de même pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/04/2013, 22h51
  2. Mettre des chaines de caractères dans un tableau.
    Par dinaing dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 18/06/2010, 12h09
  3. tableau avec des chaines
    Par guitz dans le forum Débuter
    Réponses: 4
    Dernier message: 17/10/2009, 11h47
  4. Recherche dans Tableau/Array
    Par Danyel dans le forum VB.NET
    Réponses: 9
    Dernier message: 13/04/2008, 21h26
  5. Réponses: 2
    Dernier message: 12/10/2006, 20h28

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