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 :

Changement automatique de nom de fichier


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 43
    Points
    43
    Par défaut Changement automatique de nom de fichier
    Bonjour,

    J'ai un code affichant la première image d'une page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function that_image() {
      global $post, $posts;
      $first_img = '';
      ob_start();
      ob_end_clean();
      $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
      $first_img = $matches [1] [0];
     
      if(empty($first_img)){ //Defines a default image
        $first_img = "/images/default.jpg";
      }
      return $first_img;
    }
    echo that_image();
    J'aimerais, dans ce code, pouvoir changer tout les nom des images (présentement c'est *-188x145.* et j'aimerais faire disparaitre le -188x145).

    Merci

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    je ne vois pas trop où tu veux en venir avec ta fonction.
    Voici quelques remarques :
    - Utiliser des variables globales c'est pas ce qui se fait de mieux en terme de maintenabilité
    - Démarrer le tampon de sortie puis le refermer la ligne suivante n'a aucune utilité
    - La cusine avec le regex ??!!???

    Explique ce que la fonction devrait faire et dans quel contexte (avec des mots simples si possible). Merci.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 43
    Points
    43
    Par défaut
    La fonction that_image cherche dans le post sous wordpress quel est la première image de ce post.

    J’appelle la fonction dans un autre fichier comme suis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="<?php  echo that_image(); ?>" />
    Mais l'image qui est affiché est:

    nom_de_limage-188x145.extension
    Je veux faire disparaitre le -188x145 ou du moins le remplacer par -300xpeu_import.extension

    Merci

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     
    $dirty = 'nom_de_limage-188x145.extension';
    $clean = preg_replace('/\d+x\d+/', '300xpeu_import', $dirty);
     
    ?>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 43
    Points
    43
    Par défaut
    Soit dit en passant...le peu_import devrais être n'importe quoi.

    Donc comment faire pour que peu_import devienne n'importe quel valeur?

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bah c'est pas trop difficile non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
    $dirty    = 'nom_de_limage-188x145.extension';
    $nimporte = 'nawak';
    $clean    = preg_replace('/\d+x\d+/', "300x{$nimporte}", $dirty);
     
    ?>

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 43
    Points
    43
    Par défaut
    Je pense que je ne me fais pas bien comprendre.

    Le peu_import le n'importe quel valeur c'est comme lorsqu'on fait une recherche sous windows:

    *.jpg affichera n'importe quel fichier ayant l'extension .jpg

    Dans mon cas, je veux afficher n'importe que image ayant comme nom *-300x*.*

    Donc le fichier peut s'appeler image-300x200.jpg comme images-300x999.jpg

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    je ferais quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    $name   = 'image-188x145.jpg';
    $filter = preg_replace('/\d+x\d+/', "300x%", $name); // image-300x%.jpg pour MySQL
     
    // après pour les parties fixes :
    $filter = str_replace(array('image', 'jpg'), '%', $filter); // %-300x%.% pour MySQL
     
    ?>

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 43
    Points
    43
    Par défaut
    Bon, ok je récapitule.

    J'aimerais pouvoir changer tout les nom des images (présentement c'est *-188x145.* et j'aimerais faire disparaitre le -188x145).

    J'ai modifié un peu le code mais le résultat c'est une image ayant pour nom -300x%.%

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $name   = $first_img;
    $clean = preg_replace('/\d+x\d+/', "300x%", $name); // image-300x%.jpg pour MySQL
     
    // après pour les parties fixes :
    $clean = str_replace(array('/\d+x\d+/', 'jpg'), '%', $clean); // %-300x%.% pour MySQL
     
      return $clean;

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    On va s'arrêter 30 secondes parce que je commence à bêler derrière mon clavier.

    si tu reçois un truc du genre : "image-188x145.jpg" et que toi tu veux transformer ça en "*-300x*.*" je te le dis tout de suite autant ne pas tenir compte de ce que tu reçois tu iras bien plus vite.

    Ensuite si malgré tout tu tiens compte de ce que tu reçois et que tu veux faire une légère transformation, il faudrait savoir à quel usage tu destines le texte modifié : affichage html ou envoi vers la base de données ?

    Après on voit ce qu'on peut faire

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 43
    Points
    43
    Par défaut
    Mon code sert à afficher dans une page l'image du dernier post.

    Dans mon fichier fonctions.php j'ai ajouter ce code:

    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
    function that_image() {
      global $post, $posts;
      $first_img = '';
      ob_start();
      ob_end_clean();
      $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
      $first_img = $matches [1] [0];
     
      if(empty($first_img)){ //Defines a default image
        $first_img = "/images/default.jpg";
      }
    $dirty = $first_img;
    $clean = preg_replace('/\d+x\d+/', '300x231', $dirty);
    // $name   = $first_img;
    // $clean = preg_replace('/\d+x\d+/', "300x%", $name); // image-300x%.jpg pour MySQL
     
    // après pour les parties fixes :
    //$clean = str_replace(array('/\d+x\d+/', 'jpg'), '%', $clean); // %-300x%.% pour MySQL
     
      //return $clean;
     
      return $clean;
     
    }
    Dans ma page j'ai ajouté ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="<?php  echo that_image(); ?>" />
    Donc ma page devra afficher l'image du dernier post.

    L'image par défaut du dernier post est *-188x145.* je veux remplacer ça par -300*.* (chaque image a plusieurs version de taille différente, 188 par 145 ainsi que 300 par *).

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bon on devrait s'en sortir :
    la variable globale $post contient le code HTML complet ou partiel du dernier post ? Aurais-tu un exemple de ce que tu récupères.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 43
    Points
    43
    Par défaut
    C'est possible de voir le résultat ici:

    http://test.autosphere.ca/fr/

    Juste au dessus de "Cadeaux corporatifs: 12 idées pour sortir de l’ordinaire"

  14. #14
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Dans ton exemple, comment veux-tu charger une image avec pour source ceci :
    http://test.autosphere.ca/autojournalfr/files/2012/10/cadeaux-300x%.%
    c'est juste pas possible.

    Ceci devrait suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    function that_image($src, $height, $width)
    {
        return (empty($src) || ( ! preg_match('/\d+x\d+/', $src)))
                   ? '/images/default.jpg'
                   : preg_replace('/\d+x\d+/', "{$height}x{$width}", $src);
    }
     
    ?>
    cette fonction attends 3 paramètres : le chemin de l'image du dernier post, la hauteur et la largeur de l'image à afficher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="<?php echo that_image('/images/image-188x145.jpg', 300, 300); ?>" />
    va afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="/images/image-300x300.jpg" />

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 43
    Points
    43
    Par défaut
    Mais la hauteur de l'image ainsi que le nom de l'image m'est inconnu. C'est juste la largeur qui est fix.

  16. #16
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Si le nom est inconnu, comment veux-tu monter un chemin valide ?

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 43
    Points
    43
    Par défaut
    Mon code original:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function that_image() {
      global $post, $posts;
      $first_img = '';
      ob_start();
      ob_end_clean();
      $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
      $first_img = $matches [1] [0];
     
      if(empty($first_img)){ //Defines a default image
        $first_img = "/images/default.jpg";
      }
      return $first_img;
    }
    echo that_image();
    M'affichait l'image du dernier post. Sauf que je devais changer le -188x145 par -300x*

  18. #18
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par eiffel74 Voir le message
    M'affichait l'image du dernier post. Sauf que je devais changer le -188x145 par -300x*
    donc ceci devrait suffire vu que tu conserves les autres parties du nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    function that_image($src, $width)
    {
        return (empty($src) || ( ! preg_match('/\d+x\d+/', $src)))
                   ? '/images/default.jpg'
                   : preg_replace('/\d+x\d+/', "{$width}x*", $src);
    }
     
    ?>

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 90
    Points : 43
    Points
    43
    Par défaut
    Ok, laissez tomber...ça ne marche toujours pas...comme résultat j'ai "/images/default.jpg" comme image...je vais y aller d'une autre façon.

Discussions similaires

  1. [Toutes versions] Incrementation automatique du nom du fichier
    Par maxim91350 dans le forum Word
    Réponses: 3
    Dernier message: 18/05/2012, 23h35
  2. Inscription automatique du nom du fichier lors de la sauvegarde
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/07/2010, 10h31
  3. Réponses: 15
    Dernier message: 27/02/2009, 14h28
  4. Génération automatique de noms de fichiers
    Par 84mickael dans le forum Langage
    Réponses: 7
    Dernier message: 02/05/2008, 10h41
  5. [Champ]Mise à jour automatique du nom de fichier
    Par joseph_p dans le forum Word
    Réponses: 7
    Dernier message: 23/05/2007, 09h43

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