Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

definition d'un preg_match

Aller à la page 1, 2  Suivante
Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
bozobuzu
WRInaute discret
WRInaute discret

Inscrit le: 25 Sep 2004
Messages: 61

URL permanente de ce messagePosté le : Jeu Oct 27, 2005 16:27    Sujet du message: definition d'un preg_match

Bonjour,

Juste une petit bouteille à la mer, car je suis en train de m'arracher les cheveux sur une fonction preg_match que je n'arrive pas à paramétrer.

J'ai tout simplement besoin de savoir si une date du type jj/mm/aaaa se trouve dans une chaine spécifique.

J'ai le début :

Code:
$chaine = "abcd [xx/xx/xxxx] efgh";


Après je n'arrive à rien ! Mr. Green

Si quelqu'un peut m'aider... Merci !
 
bozobuzu Visiter le site web du posteur
correiaj
WRInaute accro
WRInaute accro

Inscrit le: 25 Avr 2005
Messages: 1106
Localisation: Paraná y Bombonera

URL permanente de ce messagePosté le : Jeu Oct 27, 2005 16:47    Sujet du message: definition d'un preg_match

$subject = "ta chaine";
$pattern = '/^([0-9]{2}\/[0-9]{2}\/[0-9]{4})/';
preg_match($pattern, $subject, $matches);
if(strstr($matches,"/")){
echo `ya la date'; }
else { echo 'ya pas la date'; }
 
correiaj Visiter le site web du posteur
bozobuzu
WRInaute discret
WRInaute discret

Inscrit le: 25 Sep 2004
Messages: 61

URL permanente de ce messagePosté le : Jeu Oct 27, 2005 16:50    Sujet du message: definition d'un preg_match

heu...

C'est à dire que...

Waw... !

Ma fierté me crie : "Prends ça dans ta tronche, camarade ! Vite, propre et sans bavure ! T'as encore plein de trucs à apprendre en php !"

C'est encore mieux que ce que je cherchais ! Very Happy

Merci beaucoup !
 
bozobuzu Visiter le site web du posteur
ChezThierry
WRInaute impliqué
WRInaute impliqué

Inscrit le: 21 Oct 2005
Messages: 273

URL permanente de ce messagePosté le : Jeu Oct 27, 2005 17:12    Sujet du message: definition d'un preg_match

correiaj a écrit:
$subject = "ta chaine";
$pattern = '/^([0-9]{2}\/[0-9]{2}\/[0-9]{4})/';
preg_match($pattern, $subject, $matches);
if(strstr($matches,"/")){
echo `ya la date'; }
else { echo 'ya pas la date'; }


Si je ne m'abuse, cela ne fonctionnera que si la chaine commence par la date. Il vaut mieux faire ainsi :
Code:

$subject = 'on est le 27/10/2005 a 17h09';
$pattern = '/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/';
if (preg_match($pattern, $subject, $match)) {
  echo 'ya la date<br>';
  echo "match : $match[0]" ;
} else {
  echo 'ya pas la date';
}

 
ChezThierry Visiter le site web du posteur
bozobuzu
WRInaute discret
WRInaute discret

Inscrit le: 25 Sep 2004
Messages: 61

URL permanente de ce messagePosté le : Jeu Oct 27, 2005 18:00    Sujet du message: definition d'un preg_match

je teste les 2 versions ce soir.

En tout cas merci de m'aider à résoudre mes p'tits problèmes ! Laughing
 
bozobuzu Visiter le site web du posteur
bozobuzu
WRInaute discret
WRInaute discret

Inscrit le: 25 Sep 2004
Messages: 61

URL permanente de ce messagePosté le : Jeu Oct 27, 2005 19:04    Sujet du message: definition d'un preg_match

Alors, j'ai testé avec ça :
Code:

$chaine = " bla bla (01/05/2005) bla bla [22/06/2005] et bla bla (13/07/2005)";

   echo "1ere methode<br>";
   $pattern = '/^([0-9]{2}\/[0-9]{2}\/[0-9]{4})/';
   preg_match($pattern, $chaine, $matches);
   if(strstr($matches,"/")){
   echo 'ya la date'; }
   else { echo 'ya pas la date'; }

echo "<br><br>";

   echo "2eme methode<br>";
   $pattern = '/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/';
   if (preg_match($pattern, $chaine, $matched)) {
      echo 'ya la date<br>';
      echo "match : $matched[0]" ;
   } else {
      echo 'ya pas la date';
   }


J'obtiens :

Citation:
1ere methode
ya pas la date

2eme methode
ya la date
match : 01/05/2005


Donc la 1ere semble ne pas fonctionner.
La 2eme fonctionne, mais je voudrais appeler uniquement la date entre les []. Les autres ne m'interessent pas. J'ai tenté de modifier le $pattern, mais sans succès.

De quelle façon dois-je le modifier ?
 
bozobuzu Visiter le site web du posteur
ChezThierry
WRInaute impliqué
WRInaute impliqué

Inscrit le: 21 Oct 2005
Messages: 273

URL permanente de ce messagePosté le : Jeu Oct 27, 2005 19:21    Sujet du message: definition d'un preg_match

faut "escaper" les crochets, ça donne pour le pattern :
Code:

$pattern = '/\[([0-9]{2}\/[0-9]{2}\/[0-9]{4})\]/';


pour avoir la date dans une variable, dans ce cas, faudra lire $matched[1] et non $matched[0] sinon tu récupères les crochets avec.
dans ton exemple, ça donne :
$matched[0] = "[22/06/2005]"
et
$matched[1] = "22/06/2005"
 
ChezThierry Visiter le site web du posteur
bozobuzu
WRInaute discret
WRInaute discret

Inscrit le: 25 Sep 2004
Messages: 61

URL permanente de ce messagePosté le : Jeu Oct 27, 2005 19:32    Sujet du message: definition d'un preg_match

Génial ! ça marche nikel !

Encore merci !

J'ai plus qu'à trouver une page qui explique clairement comment paramétrer cette fonction, histoire quand meme de pouvoir comprendre pourquoi ça marche Wink
 
bozobuzu Visiter le site web du posteur
siddhy
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 20 Sep 2004
Messages: 141
Localisation: Perpignan

URL permanente de ce messagePosté le : Ven Oct 28, 2005 9:51    Sujet du message: definition d'un preg_match

Bonjour,

J'aurais une petite question moi aussi... Smile

Et si on veut TOUTES les dates de la chaine ?

En fait j'en ai eu besoin pour récupérer tous les liens d'une page HTML pour faire une sorte de moteur, et je me suis fait une petite fonction mais elle est un peu lourde.. alors je me demandais si ....

Merci
 
siddhy Visiter le site web du posteur
spidetra
WRInaute accro
WRInaute accro

Inscrit le: 07 Juil 2003
Messages: 1499
Localisation: Toulouse

URL permanente de ce messagePosté le : Ven Oct 28, 2005 10:09    Sujet du message: definition d'un preg_match

...

Dernière édition par spidetra le Ven Aoû 04, 2006 14:07; édité 1 fois
 
siddhy Visiter le site web du posteur
siddhy
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 20 Sep 2004
Messages: 141
Localisation: Perpignan

URL permanente de ce messagePosté le : Ven Oct 28, 2005 10:18    Sujet du message: definition d'un preg_match

ah voila! Very Happy

pourtant j'avais fait des recherches... Confused
mauvaises en l'occurence...

Merci Very Happy
 
siddhy Visiter le site web du posteur
bozobuzu
WRInaute discret
WRInaute discret

Inscrit le: 25 Sep 2004
Messages: 61

URL permanente de ce messagePosté le : Ven Oct 28, 2005 13:54    Sujet du message: definition d'un preg_match

Je repost sur ce fil car c'est le meme genre de question :

J'ai cherché une doc sur ces expressions bizarres genre [0-9], [^-] ou [.*] mais je ne trouve rien de "pédagogique".

Vous auriez une adresse à me conseiller ?

Le pire c'est que c'est pour des problèmes mineurs :
maintenant, je dois utiliser un preg_replace pour remplacer tous les ? dont les caractères précédents et suivants sont des lettres alphabétiques.
Code:
abc?edf => transformé en abcXXdef
[espace]?[espace] => rien
[espace]?def => rien


Merci du coup de main !


Edité **************

Oops, j'avais pas vu les post supplémentaires ! Je vais assayer de me débrouiller avec ça
 
bozobuzu Visiter le site web du posteur
bozobuzu
WRInaute discret
WRInaute discret

Inscrit le: 25 Sep 2004
Messages: 61

URL permanente de ce messagePosté le : Ven Oct 28, 2005 14:43    Sujet du message: definition d'un preg_match

Franchement compliqué comme truc. Ca va me prendre du temps...
En attendant, quelqu'un aurait-il la bonne formule ?
 
bozobuzu Visiter le site web du posteur
ChezThierry
WRInaute impliqué
WRInaute impliqué

Inscrit le: 21 Oct 2005
Messages: 273

URL permanente de ce messagePosté le : Ven Oct 28, 2005 15:24    Sujet du message: definition d'un preg_match

bozobuzu a écrit:

maintenant, je dois utiliser un preg_replace pour remplacer tous les ? dont les caractères précédents et suivants sont des lettres alphabétiques.
abc?edf => transformé en abcXXdef
[espace]?[espace] => rien
[espace]?def => rien


Code:

$string = 'abc?edf' ;
$pattern = '/([a-z])\?([a-z])/i';
$replacement = '$1XX$2';
echo preg_replace($pattern, $replacement, $string);



Je ne peux par contre pas t'orienter sur un guide "pédagogique" par contre, ça fait juste suffisament d'années que je fais du perl pour parler assez bien le regexp Smile

Mais je te conseille le Regex Coach pour tester tes regexp plus facilement.
 
ChezThierry Visiter le site web du posteur
bozobuzu
WRInaute discret
WRInaute discret

Inscrit le: 25 Sep 2004
Messages: 61

URL permanente de ce messagePosté le : Ven Oct 28, 2005 16:17    Sujet du message: definition d'un preg_match

Je vais regarder ça. Mais ça commence fort, il semble considérer le ? comme un caractere joker.

Alors comment je la fait mon expression, moi ?? Mr. Green

En attendant, je me répète : si quelqu'un peut me dire comment remplacer dans une chaine tous les *?* (* étant n'importe quel caractere de l'alphabet sauf l'espace) par une autre expression type *XX*

Merci
 
bozobuzu Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 2 - Aller à la page 1, 2  Suivante
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

Autres sujets de discussion :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort