begin process at 2012 05 31 06:17:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Aide & documentation

 > 

preg_match_all


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

preg_match_all

vendredi 16 octobre 2009 à 14:26:42 | preg_match_all

Kloyd

Bonjour j'aimerais recuperer à l'aide d'un Preg match all

hors du code ci-dessous:

Code HTML :
<tr><td style=" vertical-align:top;"> 
					                            <a href='fiche_client=124.html'><img 
                                                    src='http://***' 
                                                     alt='Jean Herbert' /></a>				                                       
		                                         </td><td style=" vertical-align:left;"><div><div style="margin-top:-12px;"> 
		                                       
				                                
                                                                                                     
                                                        <a href='fiche_client=124.html'>
                                                                Jean Herbert</a> <br />                                                                                   
                                                    
                                                <span class="fiche">

			                                    
                                        
                                                        <b>5</b>001<br />
                                                         rue des viviers 15<br />
                                                         7390 Quaregnon, Belgique
                                                        
                                                    	
                                            </span> <!--  fin fiche client -->



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

Code PHP :
$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.
vendredi 16 octobre 2009 à 14:29:13 | Re : preg_match_all

Kloyd

evidement, le code se repete pour chaque client, mais j'ai oublié de le dire !!!
vendredi 16 octobre 2009 à 15:52:52 | Re : preg_match_all

neigedhiver

Réponse acceptée !
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) :

Code PHP :
`<a href='fiche_client=([0-9]+)\.html'>\s*([^<>]+)</a>\s*<br\s*/>\s*<span class="fiche">\s*<b>.*<br />(.*)</span>`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
vendredi 16 octobre 2009 à 18:14:07 | Re : preg_match_all

Kloyd

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 ^^
vendredi 16 octobre 2009 à 19:34:04 | Re : preg_match_all

neigedhiver

Réponse acceptée !

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 :

Code HTML :
<td class="img_client">
  <a href="fiche_client=124.html"><img id="img_client_124" src="http://***" alt="Jean Herbert" /></a>
</td>
<td class="fiche">
  <h3><a href='fiche_client=124.html'>Jean Herbert</a></h3>
  <div id="fiche_124" class="fiche">
     <h4 class="fiche_id"><b>5</b>001</h4>
     <div class="adresse">rue des viviers 15<br />
     7390 Quaregnon, Belgique</div>
  </div>
</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
samedi 17 octobre 2009 à 07:11:49 | Re : preg_match_all

Kloyd

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.
samedi 17 octobre 2009 à 21:15:46 | Re : preg_match_all

neigedhiver

Réponse acceptée !
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
dimanche 18 octobre 2009 à 13:45:01 | Re : preg_match_all

Kloyd

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. ;)


Cette discussion est classée dans : code, preg, match, all, donneeclient


Répondre à ce message

Sujets en rapport avec ce message

Métacaractères... [ par mfaraday ] Salut...Est-ce que quelqu'un pourrait m'expliquer comment utiliser les métacaractères dans un profil de recherche pour la fonction preg_match par exem Problème avec preg_match_all [ par Bountard ] Salut à tous, j'ai un petit problème avec l'utilisation de preg_match_all. Pour faire plus simple voila mon bout de code d'essai :   $html = ' un Preg_match_all , soucis d'utilisation [ par Bountard ] Bonjour à tous, j'ai un problème depuis quelques jours avec preg_match_all. Voila mon code : $html = ' un deux un bis Masque pour preg_match() ... Aidez-moi ! [ par LocalStone ] Alors, j'expose le problème : J'ai 1 fichier texte qui contient des ligne du style : 0004 - Chu Chu Rocket (J)Donc le masque approprié pour sépare preg_match_all comment faire ? [ par Steph115 ] Bonjour,Je ne suis pas très a l'aise dans les preg_match_all et je bloque un peu sur cette idée :J'ai une chaîne définit comme cela :!view_client:*,vi preg_match_all tous les caractères [ par mike1310 ] Bonjour à tous,j'ai encore un problème avec ce satané preg_match_all ... J'ai une chaine de caractère comme ceci :blablablabalbal du texte et encore d preg_match_all [ par shefiu ] Bonjour,Je voulais utiliser un preg_match_all pour recuperer tous les liens sur une page web. Ensuite j'affiche le resultat et je me rend compte que q preg_match_all avec bracket [ ] [ par lord1366 ] Bonjour, j'ai besoin d'extraire la partie de texte contenu dans un texte similaire à ceci : Cher [Prénom] [NomDeFamille] , Nous vous invitons au séj Problème avec preg_match_all [ par nisaloncaje ] BonjourJe comptais utiliser la fonction preg_match_all afin d'extraire d'une chaine caractère les sous chaines contenues entre 2 balises ([yt] et  [/y


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales