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 :

Parse : Artiste - Piste - Titre [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Par défaut Parse : Artiste - Piste - Titre
    Bonjour à tous,

    J'ai besoin de faire une petite fonction pour parser une chaine et retrouver des éléments. A l'image des célebrissimes TheGodFather et Tag&Rename, j'aimerai pouvoir spécifier un masque du type %1 - %3 - %2. L'intérêt étant bien sûr de faire du traitement de masse avec un masque choisi selon la liste de chaines à traiter..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exemple : 
    Masque : %3. %1 - %2
    Chaine : 01. Artiste - Titre
    Résultat : {piste 01, artiste Artiste, titre Titre, album }
    Mais voilà, je ne sais absolument pas comment faire !!!

    Lol, donc si vous pouviez me donner quelques pistes, cela m'aiderai grandement !
    Par contre, je ne suis pas un expert en regex si vous voyez ce que je veut dire

  2. #2
    Membre confirmé
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Par défaut
    Cela semble fonctionner...


    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    $mp3 = "02. artiste - titre";
    $asked_mask = "%6. %1 - %2";
     
     
    $str = eregi_replace(".mp3$", "", $mp3);
    $mask = $asked_mask;
    $details = array ('artiste' => "", 'title' => "", 'album' => "");
     
    // on drop les caractères de la fin
    if (!eregi("%[0-9]{1}$", $mask)) {
      if (($index_mask_last_tag = strrpos($mask, '%')) !== false) {
        $drop = substr($mask, $index_mask_last_tag + 2);
        $mask = eregi_replace($drop."$", "", $mask);
        $str = eregi_replace($drop."$", "", $str);
        //print("drop = $drop<br />");
      } else {
        $mask = "";
      }
    }
    while (strlen ($mask) > 0) {
      // on drop les caractères du début
      if (!eregi("^%", $mask)) {
        if (($index_mask_first_tag = strpos($mask, '%')) !== false) {
          $drop = substr($mask, 0, $index_mask_first_tag);
          $mask = eregi_replace("^$drop", "", $mask);
          $str = eregi_replace("^$drop", "", $str);
        }
      }
     
      // on cherche le prochain drop (ou balise)
      $index_mask_first_tag = 0;
      $first_tag = substr($mask, $index_mask_first_tag, 2);
      // $index_mask_drop_begin = $index_mask_first_tag + 2;
      if (($index_mask_second_tag = strpos($mask, '%', $index_mask_first_tag + 1)) === false) {
        $mask = "";
        $first_value = $str;
      } else {
        $first_drop = substr($mask, $index_mask_first_tag + 2, $index_mask_second_tag - ($index_mask_first_tag + 2));
        $index_str_first_value = 0;
        if (($index_str_first_drop = strpos($str, $first_drop)) === false) {
          $first_value = $str;
          $mask = "";
        } else {
          $first_value = substr($str, $index_str_first_value, $index_str_first_drop);
          $mask = substr($mask, $index_mask_second_tag);
          $str = substr($str, $index_str_first_drop + strlen($first_drop));
        }
      }
     
      switch ($first_tag) {
        case '%1':
          $details['artiste'] = $first_value;
        break;
        case '%2':
          $details['title'] = $first_value;
        break;
        case '%3':
          $details['album'] = $first_value;
        break;
        default:
          // pas de besoin
        break;
      }
    }
     
    print ("mp3 = $mp3<br />masque = $mask<br />values = ");print_r($details);

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

Discussions similaires

  1. enregistrement de la figure avec le titre qui correspond au nom de la piste
    Par jena dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 19/03/2014, 12h27
  2. Lire la piste 0 d'une disquette
    Par gtr dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 17/02/2003, 12h40
  3. [VB6] masquer la barre de titre d'une form
    Par tiboleo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/12/2002, 18h54
  4. [VB6] Déplacer la form sans cliquer sur la barre de titre
    Par Ingham dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/11/2002, 03h09
  5. Réponses: 2
    Dernier message: 17/10/2002, 17h16

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