preg_match - Warning: preg_match() [function.preg-match]: De

Eléphant du PHP | 331 Messages

21 oct. 2009, 20:35

Bonjour,

j'essais de faire un script qui va détecter si mes images se termine par -0.jpg, -1.jpg ou -2.jpg

J'ai donc essayé ceci:
$path_parts = pathinfo('7_1-1.jpg');

$file_name  = $path_parts['basename'];
if(preg_match("".$file_name."", "-0.jpg"))
{
echo "Oui";
}
else
{
echo "No!";
}
Mais j'obtiens toujours cette erreures dont je ne trouve pas la solution:
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in /var/www/html/nospac/renommer_les_images3.php on line 24
Pouvez-vous m'aider svp?

Merci!

Mammouth du PHP | 985 Messages

21 oct. 2009, 21:32

// Test sur un fichier 
$fichier = '7_1-1.jpg';

// fonction preg_match avec le nom complet du fichier (extension comprise)
if(preg_match('#-[0-9]\.jpg$#', $fichier)) {
   echo 'Oui';
}
else {
   echo 'Non';
}

// extraction de l'extension et du nom du fichier
list($nomfichier, $extension) = explode(".", $fichier); 

// fonction preg_match avec juste le nom du fichier sans l'extension
if(preg_match('#-[0-9]$#', $nomfichier)) {
   echo 'Oui';
}
else {
   echo 'Non';
}
Bon, je n'ai pas testé, mais c'est en gros l'idée :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Mammouth du PHP | 985 Messages

21 oct. 2009, 23:31

Encore mieux, cela évite des possibles bugs à cause de plusieurs "." dans le nom du fichiers...
Cela permet de checker le fichier quelque-soit l'extension.
// Test sur un fichier
$fichier = '7_1-1.jpg';

// extraction du nom du fichier (sans l'extension)
$nomfichier = explode('.', $fichier, -1);
$nomfichier = array_pop($nomfichier);

// fonction preg_match avec juste le nom du fichier sans l'extension
if(preg_match('#-[0-9]$#', $nomfichier)) {
   echo 'Oui';
}
else {
   echo 'Non';
}
Sans vouloir me donner des fleurs -> cela me parait quasiment parfait -> Testé :wink:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Eléphant du PHP | 369 Messages

22 oct. 2009, 09:47

Salut,
Bonjour,
j'essais de faire un script qui va détecter si mes images se termine par -0.jpg, -1.jpg ou -2.jpg
J'ai donc essayé ceci:
$path_parts = pathinfo('7_1-1.jpg');
$file_name  = $path_parts['basename'];
if(preg_match("".$file_name."", "-0.jpg"))
{
echo "Oui";
}
else
{
echo "No!";
}
Mais j'obtiens toujours cette erreures dont je ne trouve pas la solution:
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in /var/www/html/nospac/renommer_les_images3.php on line 24
Pouvez-vous m'aider svp?
Merci!
L'algo est assez simple: Chercher une chaine puis retourner une partie de celle-ci.

J'ai posé deux patterns différents à toi de choisir celui qui convient le mieux à ton besoin.
Le premier est sans limite sur les chiffres le second se limite à ta demande propre: 0, 1 et 2:
// Pseudo fichier dont le nom...
//
$fileName = "7-l-1.jpg";

// Pattern de recherche: Renvoie tous les chiffres
//
$pattern_1 = "#-([\d]{1,})\.jpg$#";

// Pattern de recherche: Ne renvoi que les 0,1 et 2
//
$pattern_2 = "#-([0-2])\.jpg$#";

// Parse et résultat
//
if (preg_match($pattern_1, $fileName, $match) >  0)
{
   // Elément 0: La réception globale de la recherche
   //
   echo $match[0];

   // Elément 1: Le résultat final
   //
   echo $match[1];
}
else die("La recherche a échouée !");
@+ bon code ;)

Mammouth du PHP | 985 Messages

22 oct. 2009, 13:03

@+ bon code ;)
C'est quasiment le copier/coller d'une partie du code que j'avais posté... #-o
J'essaye aussi de respecter le code original posté par l'auteur du Topic.

J'en profite donc pour rassembler les 2 codes bouts de codes finaux que j'avais posté, le deuxième permettant aussi de vérifier un fichier quelque-soit son extension...
Ce sera plus clair.
// Test sur un fichier
$fichier = '7_1-1.jpg';

// fonction preg_match avec le nom complet du fichier (extension comprise)
if(preg_match('#-[0-9]\.jpg$#', $fichier)) {
   echo 'Oui';
}
else {
   echo 'Non';
}

// extraction du nom du fichier (sans l'extension)
$nomfichier = explode('.', $fichier, -1);
$nomfichier = array_pop($nomfichier);

// fonction preg_match avec juste le nom du fichier sans l'extension
if(preg_match('#-[0-9]$#', $nomfichier)) {
   echo 'Oui';
}
else {
   echo 'Non';
}
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.