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 :

Nom de fichier + Strip Digits + echo nom du fichier


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 114
    Par défaut Nom de fichier + Strip Digits + echo nom du fichier
    bonjour tout le monde,

    J'essayes d'extraire le nom d'un fichier sans les chiffres pour m'en servir de filtre pour ma gallery photo dynamique.

    dans le repertoire les photos sont nommées comme ceux ci :
    paysages1.jpg
    paysages2.jpg
    animaux1.jpg
    animaux2.jpg
    ....

    je voudrez récuperer la valeur animaux et paysages pour faire un echo dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $stripdigits; ?>
    et je n'arrive pas a récupérer cette valeur

    ci-dessous le code , cela certainement plus clair :

    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
     
    <html>
    		<div class="row">
     
     
    		        <div class="gallery col-lg-12 col-md-12 col-sm-12 col-xs-12">
    		            <h1 class="gallery-title">Gallery</h1>
    		        </div>
     
    		        <div align="center">
    		            <button class="btn btn-default filter-button" data-filter="all">All</button>
    		            <button class="btn btn-default filter-button" data-filter="paysages">Paysages</button>
    		            <button class="btn btn-default filter-button" data-filter="animaux">Animaux</button>
    		        </div>
    		        <br/>
     
    				<?php
    		        	$files = scandir ("img");
    		        	$info = pathinfo($files);
    				$filename =  basename($files,'.'.$info['extension']);
    				$stripdigits = preg_replace('/[0-9]+/', '', $filename);
     
    	           		$i = 0;
    	            	        for ($a = 3; $a < count ($files) ; $a++) :
    	                        ?>
    		            <div class="gallery_product col-lg-4 col-md-4 col-sm-4 col-xs-6 item <?php echo $i == 0 ? 'active': ''; ?>" align="center" filter <?php echo $stripdigits; ?> >
     
    	                <img class="img-responsive" src="img/<?php echo $files[$a]; ?>" alt="photos">
    					</div>
                  	<?php
    	                $i++;
    	                endfor;
    	            ?>
     
    		</div>
    </html>

    merci d'avance pour vos lumiéres
    BouBourse

  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
    Par défaut
    scandir() renvoit un tableau. Il faut le parcourir avec foreach()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 114
    Par défaut
    merci pour ta reponse
    du coup j'ai pu avancer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
       	$files = scandir ("img/");
           	$i = 0;
          	for ($a = 3; $a < count ($files) ; $a++) :
           	$i++;
            endfor;
           	   foreach( $files as $value ) {
    	   $stripdigits = preg_replace('/[0-9]+/', '', $value);
    	   $stripdigits1 = var_dump(basename($stripdigits, '.jpg'));
    	   echo $stripdigits1. '<br />';
     	   }
    ?>
    cela me retourne , c'est parfait !:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    string(1) "." 
    string(2) ".." 
    string(9) ".DS_Store" 
    string(5) "animaux" 
    string(5) "animaux" 
    string(5) "animaux" 
    string(5) "animaux" 
    string(5) "animaux" 
    string(5) "animaux" 
    string(5) "animaux" 
    string(8) "paysages"

    du coup il faut que j'intégre la div ci-dessous dans la boucle pour que l'echo $stripdigits1 retourne la valeur associé a l'image ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div class="gallery_product col-lg-4 col-md-4 col-sm-4 col-xs-6 item <?php echo $i == 0 ? 'active': ''; ?>" align="center" filter <?php echo $stripdigits1; ?> >
           <img class="img-responsive" src="img/<?php echo $files[$a]; ?>" alt="photos">
    </div>
    est il re-faut un foreach pour que l'echo fonctionne ou je peut directement affiché la valeur du string ?

    mon count ne fonctionne plus pour retirer string(1) "." , string(2) ".." string(9) ".DS_Store" , je ne vois pas comment l'intégré au foreach.

    Y a encore du taf et j'ai encore besoins de vous

    Merci


    edit :
    j'ai reussi a faire ce que je voulais mais la maniére ....

    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
    <!DOCTYPE html>
    <html>
    	<body>
    		<div class="row">
    		        <div class="gallery col-lg-12 col-md-12 col-sm-12 col-xs-12">
    		            <h1 class="gallery-title">Gallery</h1>
    		        </div>
    		        <div align="center">
    		            <button class="btn btn-default filter-button" data-filter="all">All</button>
    		            <button class="btn btn-default filter-button" data-filter="paysages">Paysages</button>
    		            <button class="btn btn-default filter-button" data-filter="animaux">Animaux</button>
    		        </div>
    				<?php
    		        	$files = scandir ("img/");
    	                foreach($files as $images) {
    	                		$remove= str_replace('.', '', $images);
    	                		$remove1= str_replace('..', '', $remove);
    	                		$remove2= str_replace('DS_Store', '', $remove1);
    	                		$remove_numbers= preg_replace('/[0-9]+/', '', $remove2);
    					$filter= (basename($remove_numbers, 'jpg'));
             		    		echo $filter;
             					echo "<div class=\"gallery_product col-lg-4 col-md-4 col-sm-4 col-xs-6 item filter $filter \"align=center\">";
    							echo"<img class=\"img-responsive\" src=\"img/$images\" alt=\"photos\">";
    							echo"</div>";
    	            	}
    	         	?>
    	     </div>
      </body>
    </html>
    je me retourve avec 3 div vide parce que le str_replace masque juste les valeurs et ne les supprimes pas ... pas top
    si vous avez une autre solution et il y en a surement une autre pour que cela soit plus propre je suis preneur

    Boubourse

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Par défaut
    Bonsoir,

    Si j'ai bien compris ton intention, tu voudrais supprimer les éléments '.', '..' et 'DS_Store' du tableau $files.

    Si c'est ce que tu souhaites, je te propose de placer le foreach suivant juste avant le foreach de ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach($files as $key => $value)
    {
    	if ($value == '.' || $value == '..' || $value == 'DS_Store')
    	{
    		unset($files[$key]);
    	}
    }
    De cette façon, cela devrait non pas remplacer les chaînes '.', '..' et 'DS_Store' par des chaînes vides, mais plutôt les retirer du tableau. Cela va donc te laisser un tableau $files uniquement avec les fichiers dont tu voulais retirer les chiffres.

    EDIT :

    Il y a une solution beaucoup plus simple, c'est de remplacer ton foreach par le code suivant :

    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
    foreach($files as $images) 
    {
     
    		if (!($images == '.' || $images == '..' || $images == 'DS_Store'))
    		{
    			$remove_numbers= preg_replace('/[0-9]+/', '', $images);
    			$filter= (basename($remove_numbers, 'jpg'));
    			echo $filter;
    			echo "<div class=\"gallery_product col-lg-4 col-md-4 col-sm-4 col-xs-6 item filter $filter \"align=center\">";
    			echo"<img class=\"img-responsive\" src=\"img/$images\" alt=\"photos\">";
    			echo"</div>";
     
    		}
     
    }
    Par contre, je n'ai pas pu tester. J'espère que ça marche.
    J'espère ne pas répondre à côté du sujet.
    Bonne soirée.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 114
    Par défaut
    Bonjour,

    Merci pour ta solution webly-yours,

    je partage mon code ca pourra toujours servir a quelqu'un :-)

    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
    <div class="mycontainer col-xl-12">
            		<div class=" row logo col-xl-4">
                		<p>Logo</p>
         			</div>
    		        <div class="nav col-xl-8" align="center">
    		            <button class="btn btn-default filter-button" data-filter="all">All</button>
    		            <button class="btn btn-default filter-button" data-filter="paysages">Paysages</button>
    		            <button class="btn btn-default filter-button" data-filter="animaux">Animaux</button>
    		            <button class="btn btn-default filter-button" data-filter="fleurs">Fleurs</button>
    		            <button class="btn btn-default filter-button" data-filter="paris">Paris</button>
    		            <button class="btn btn-default filter-button" data-filter="artistique">Artistique</button>
    		        </div>
    	        	<div class="gallery col-xl-12 ">
    					<?php
    			        	$files = scandir ("img/");
    			        	$files1= array_diff($files, array('.', '..','.DS_Store'));
    		                foreach($files1 as $images) {
    		                		$remove_numbers= preg_replace('/[0-9]+/', '', $images);
    								$filter= (basename($remove_numbers, '.jpg'));
    								echo"<img class=\"photos col-xl-4 filter $filter\" src=\"img/$images\">";
    		            	}
    		         	?>
    		        </div>
    	</div>

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/08/2017, 21h37
  2. Cmd ECHO créer un fichier txt avec l'heure comme nom
    Par Seth_Nemesia111 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 10/03/2015, 14h42
  3. Réponses: 5
    Dernier message: 11/02/2006, 08h12
  4. Réponses: 6
    Dernier message: 28/09/2005, 14h15
  5. Regrouper des fichiers sous un même nom
    Par Azharis dans le forum C++
    Réponses: 7
    Dernier message: 22/06/2005, 12h05

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