Preg_match_all [Résolu]

Messages postés
6
Date d'inscription
vendredi 15 mai 2009
Dernière intervention
14 avril 2012
- 16 oct. 2009 à 14:26 - Dernière réponse :
Messages postés
6
Date d'inscription
vendredi 15 mai 2009
Dernière intervention
14 avril 2012
- 18 oct. 2009 à 13:45
Bonjour j'aimerais recuperer à l'aide d'un Preg match all

hors du code ci-dessous:










Jean Herbert






5 001

rue des viviers 15

7390 Quaregnon, Belgique





Le numero de client, son nom, son adresse et sa localité,
ou au pire, le numero de client et le nom, suffiront.

à l'aide d'un preg match all comme di ci-dessous


$listeclient = clients.html
preg_match_all("*******",$listeclient,$lesclients,PREG_SET_ORDER);
foreach ($lesclients as $donneeclient) {
echo donneeclient[1]
echo donneeclient[1]
et si possible...
echo donneeclient[3]
echo donneeclient[4]}



Ce qu'il me manque (*****) c'est le $pattern, je bloque dessus depuis au moins 8h, j'arrive pas à cerner les chaines qu'il me faut.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 janvier 2011
- 16 oct. 2009 à 15:52
3
Merci
Salut,

Je sais pas si c'est optimisé, mais ça marche avec le code HTML que tu as donné en exemple (je ne donne que le pattern) :

`\s*([^<>]+)\s*
\s*\s*.*
(.*)`Uis


Question : j'imagine que le code HTML n'est pas généré sur ton serveur... ?

--
Neige

N'hésitez pas à lire la doc

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de neigedhiver
Meilleure réponse
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 janvier 2011
- 16 oct. 2009 à 19:34
3
Merci
Ah ben alors tu devrais faire du code HTML plus propre ;)
Deux raisons à cela :
- ton code n'est absolument pas valide HTML3.2, 4.0 et encore moins XHTML1.x
- en pensant mieux tes balises HTML et en évitant les espaces sur plusieurs lignes, ton expression régulière gagnerait en rapidité. Par exemple, tu pourrais produire du code HTML comme ça :

<td class="img_client">
  [fiche_client=124.html ]
</td>
<td class="fiche">
  Jean Herbert

  

     5001

     
rue des viviers 15

     7390 Quaregnon, Belgique

  

</td>

Plusieurs points à noter :
- mieux vaut sortir la mise en forme (CSS) de la mise en page, afin de mieux gérer les modifications éventuelles et ultérieures
- utiliser autant que possible des éléments qui décrivent réellement le document, en utilisant des titres notamment, mais aussi en séparant dans des blocs séparés les éléments qui n'ont rien à voir (par exemple l'adresse n'a pas sa place dans le même bloc que l'ID, ou ce genre de chose). Ca ne change rien au niveau de l'affichage (et c'est tant mieux), mais ça permet de mieux comprendre le document quand tu en regardes la source. Conséquence, ça le rend plus accessible aux personnes/visiteurs qui n'ont pas un navigateur graphique (aveugles notamment, mais aussi moteurs de recherche). Bon, si c'est pour un intranet, ça n'a pas grande importance, si ce n'est prendre de bonnes habitudes pour d'autres cas ;)
- séparer les éléments permet de les retrouver plus facilement, que ce soit manuellement ou en utilisant un script avec une expression régulière. là, l'expression régulière que je t'ai donnée fonctionne. Mais si tu rajoutes un espace quelque part, il se peut que ça ne fonctionne plus. En utilisant des balises avec des ID, tu peux plus facilement localiser le texte que tu cherches.

Voilà voilà :)

--
Neige

N'hésitez pas à lire la doc

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de neigedhiver
Meilleure réponse
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Dernière intervention
14 janvier 2011
- 17 oct. 2009 à 21:15
3
Merci
Un excellent tuto : http://www.lumadis.be/regex/
Perso, c'est devenu ma référence. Il y a même un testeur qui permet de bencher différents masques pour voir lequel est le plus rapide.

Les regex, c'est pas le plus facile quand on apprend. Si en 6 mois t'en es là, avec Google, je dirais qu'a priori tu as un avenir prometteur.
Moi, ça fait seulement 1an ou 1an 1/2 que j'ai vraiment compris le truc... En partie grâce à ce tuto sur lumadis.

Et pas de problème, je reçoit un mail à chaque réponse, je suis donc le sujet ;)

--
Neige

N'hésitez pas à lire la doc

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de neigedhiver
Messages postés
6
Date d'inscription
vendredi 15 mai 2009
Dernière intervention
14 avril 2012
- 16 oct. 2009 à 14:29
0
Merci
evidement, le code se repete pour chaque client, mais j'ai oublié de le dire !!!
Commenter la réponse de cs_Kloyd
Messages postés
6
Date d'inscription
vendredi 15 mai 2009
Dernière intervention
14 avril 2012
- 16 oct. 2009 à 18:14
0
Merci
Merci beaucoup pour la rapidité de la réponse et surtout pour la doc mais je ne trouve pas un tuto avec la liste des codes de type (.*) [0-9], Uis, ... etc qu'on peut inserer dans les pattern.
Franchement merci. j'aurais du venir demander plus tot.

si si si c'est sur un de mes serveurs ext ^^
Commenter la réponse de cs_Kloyd
Messages postés
6
Date d'inscription
vendredi 15 mai 2009
Dernière intervention
14 avril 2012
- 17 oct. 2009 à 07:11
0
Merci
J'ai deux ou trois question à te poser sur ce que tu viens de me donner comme conseil, mais je vais d'abord me concentrer sur la fin de mon script.
surveille ce post, je reviendrai d'ici peu.

J'ai tout appris grace à google, ce site et phpdebutant il y'a 6 mois de ca, et j'ai passé les etapes importantes à mon avis.

Par contre, j'aimerais si tu peux que tu me detailles comment tu as trouvé le pattern et/ou je pourrais trouver un tuto complet la dessus.

car je sais utiliser preg match mais le pattern et ses caractères, c'est du chinois pour moi et la doc est pas facile à trouver sur ca. si tu détailles déjà celui-ci et/ou si tu y ajoutes quelques trucs manquants qu'il faut savoir, je me débrouillerai pour essayer de maitriser.
Commenter la réponse de cs_Kloyd
Messages postés
6
Date d'inscription
vendredi 15 mai 2009
Dernière intervention
14 avril 2012
- 18 oct. 2009 à 13:45
0
Merci
on dirait le nouveau testament pour moi ! :p juste de savoir que ca s'appelle regex c'est un pas. mais en plus ta doc est super complète. merci. ;)
Commenter la réponse de cs_Kloyd

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.