Expression Reg. Si ma chaine contient "tmp"

Résolu
Signaler
Messages postés
87
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
17 décembre 2008
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonjour a tous.

Voila je cherche à supprimer des fichiers si ils contiennent une certaine chaine de caractere.
Je pense que l'utilisation d'expression reguliere est la meilleure solution mais si vous en avez d'autres je suis preneur.

Je recupere des noms de fichiers contenu dans un repertoire, est je voudrai tester pour chaque nom, si la chaine 'tmp_' est contenu dedans.
Si c'est le cas je supprime le fichier.

J'attend vos conseils.
Merci d'avance.

Atomik29

7 réponses

Messages postés
87
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
17 décembre 2008
1
Merci coucou747 et J_G

a+

Atomik29
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Ouaich... Je me suis planté dans l'ordre des paramètres... Mais tu aurais pu (du) vérifier l'utilisation de la fonction dans la doc PHP (www.php.net).


Bref, il fallait lire :
if ( strpos($filename, 'tmp_') !== false ) // 'tmp_' trouvé
else // 'tmp_' absent

!!! ET ATTENTION !!!
J'ai bien écrit '!==' et non '!=' La dfférence est importante...
(de même n'est pas l'opérateur)
La encore la doc te dira pourquoi...

A+
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
Salut

sinon, tu pourrais au moins valider la reponse de ceux qui t'on aides, et pas la tienne...

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
Salut

faut le faire avec strpos

cherche dans la doc
opendir
readdir
is_file
file_get_contents
unlink

<hr />une recherche sur exalead vous aurait peut-etre evite de poser cette question

In a dream, I saw me, drop dead...
U were there, U cried...
It was just a dream,
if I die, U won't cry, maybe, U'll be happy
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut,


L'utilisation des expression régulières me semble un peu lourde pour un simple test sur 'tmp_'...

Le plus efficace serait : strpos()

exemple:
if ( strpos('tmp_',$filename) !== false ) // 'tmp_' trouvé
else // 'tmp_' absent

A+
Messages postés
87
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
17 décembre 2008
1
en faite j'ai 2 possibilités dans le nom des fichiers (images):
soit la chaine tmp est au debut : tmp_27315_1001_2.jpg
soit apres mini : mini_tmp_27315_1001_3.jpg

J_G j'ai essaye ton code mais ca ne fonctionne pas....(jdois pas etre bien reveille)...

while($manu_ids = mysql_fetch_array($manu_ids_query))
{
    $links_manufacturer_id=$manu_ids['links_manufacturer_id'];
   
    if ($links_manufacturer_id!='0')
    {
        $rep=opendir('../../office/a'.$links_manufacturer_id.'/catalog/images/banners/');
        while ($images = readdir($rep))
        {
           if ( strpos('tmp_',$images) != false )
                  echo "trouve";
              else
                echo "rien";
        }
        closedir($rep);
    }   
}
Je ne recupere rien, alors qu'il devrait me trouve deux images...

Est-ce que l'utilisation de substr ne serait pas mieux ????

Atomik29
Messages postés
87
Date d'inscription
jeudi 26 août 2004
Statut
Membre
Dernière intervention
17 décembre 2008
1
J'ai utilisé substr pout tester et ca fonctione bien ....

if ( substr($images,0,4)=='tmp_' || (substr($images,0,9)=='mini_tmp_') )
    echo "OK";
else
    echo "rien";

Je ne pense pas que ce soit la meilleure solution mais bon ...

Atomik29