IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

match avec exclusion [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 479
    Points : 281
    Points
    281
    Par défaut match avec exclusion
    Bonjour,

    Je souhaite, dans le code html d'une page, récupérer toutes les chaînes du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td>du texte en html</td><td><img src=..></td>
    J'utilise cette expression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td>[<>\[\]{}()\"' =,;:!?./\w-]+</td><td><img [<>\w=\"' /._,-]+></td>
    Mais si j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td>du texte en html 1</td><td><img src=..></td></tr><tr><td>du texte en html 2</td><td><img src=..></td>
    L'application de l'expression me renvoie un seul résultat alors que j'en voudrais deux.

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    À mon avis, il vaut mieux accepter TOUT ce qui ce trouve entre le permier <td> et </td>, et tout ce qui se trouve dans la balise <img />.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('%<td>.+?</td><td><img[^>]+></td>%s', $str, $res, PREG_PATTERN_ORDER);

  3. #3
    Membre actif
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 479
    Points : 281
    Points
    281
    Par défaut
    Malheureusement, ça ne va pas.

    Exemple avec la chaîne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><h2>Une étape vers la taille douce</h2><div style="text-align: justify;">Avec les ans, on évolue. D'une méthode de taille un peu "dogmatique" apprise en lisant des livres très savants, j'en suis venu à suivre les préceptes d'un approche plus naturelle, moins traumatisante pour les arbres.<br />A l'usage,les principes de la taille douce m'ont convaincu par leurs résultats probants, et par l'économie de moyens qu'ils encouragent.*</div></td><td><img width="300" height="225" src="Image/brindille-morte.jpg" alt="brindille morte à tailler" /><br /><div>Une brindille morte à supprimer </div></td></tr></tbody></table><br /><h2>Période de taille</h2><div style="text-align: justify;">Si la taille douce peut être pratiquée à longueur d'année (bousculant en cela quelques idées reçues), on ne se risquera pas à tailler les fruitiers au début de l'automne.<br />A cette époque de l'année, les arbres reconstituent leurs réserves pour l'hiver. Ils ne sont pas encore endormis (ce qui permet de taille franchement), ni suffisamment "actifs" pour se protéger avec une bonne cicatrisation.</div><h2>Coup d'oeil facilité</h2><div style="text-align: justify;">En début d'automne, on distingue facilement les branches mortes du reste du bois. C'est beaucoup moins évident en hiver : une branche morte n'est pas toujours facile à distinguer d'une branche vive sans feuille... En opérant dès maintenant, vous éviterez d'en oublier sur l'arbre pendant les opérations de taille. </div><h2>Importance de l'observation</h2><div style="text-align: justify;">Si le moment des traitements d'hiver n'est pas encore venu, mettez cependant à profit cette visite de début de saison pour ôter de l'arbre tous les fruits pourris (on dit "momifiés"), vecteurs importants dans la propagation des maladies.<br />Avant d'envisager le lancement de grandes opérations, observez vos arbres. Pas juste un coup d'oeil circulaire : une véritable observation. Appréciez la silhouette, la vigueur de la végétation, un déséquilibre dans la forme, une gêne de l'entourage pour le développement...<br />C'est à la faveur de cette phase d'observation que vous remarquerez très certainement plusieurs branches mortes. 2 cas de figure :</div><ul><li style="text-align: justify;">ces branches sont nombreuses et l'arbre paraît fatigué : ce peut être le symptôme d'une maladie, ou d'un arbre âgé qui a besoin d'un rajeunissement</li><li style="text-align: justify;">ces branches sont en nombre raisonnable, et l'arbre semble par ailleurs en bonne santé : il s'agit d'un auto-élagage. C'est une situation très habituelle, qui nous occupe aujourd'hui.</li></ul><h2>Supprimer les branches mortes</h2><div style="text-align: justify;">L'auto-élagage, c'est une taille spontanée pratiquée par l'arbre. En l'observant, vous apprendrez beaucoup sur la façon raisonnable de tailler. En l'amplifiant, vous aiderez l'arbre à se rajeunir, ce qui stimule grandement la production de fruits.<br />Constats :</div><ul><li style="text-align: justify;">le bois mort est principalement placé dans les parties de l'arbre trop fournies, manquant d'air et de lumière. Pour se développer correctement, les branches ont besoin de ces 2 éléments; c'est la base de l'éclaircissage.</li><li style="text-align: justify;">le dépérissement touche des éléments de végétation complets. La branche ou le rameau ne sont pas morts à mi-hauteur : ils sont secs jusqu'à leur point de raccordement avec le reste de la structure de l'arbre. C'est une constante, qui vous guidera dans vos travaux d'élagage à venir.</li><li style="text-align: justify;">Des branches ont ployé sous le poids des fruits; de jeunes pousses vigoureuses s'élancent vers le ciel, quand d'autres plus âgées pendent vers le sol. A terme, elles sècheront et mourront. Ce sont elles notamment que l'on supprimera lors de la taille.</li></ul><h2>En pratique</h2><br /><table cellspacing="0" cellpadding="0" border="0" style="width: 100%;"><tbody><tr><td><div style="text-align: justify;">Après ces observations instructives, supprimez les parties mortes. Munissez-vous d'un sécateur et d'un coupe branches bien affutés. <br />Otez tout le bois mort, en suivant les indications de la nature. <br />On enlève toujours l'élément de structure en totalité, quelque soit sa taille, simple brindille ou une branche entière. <br />Cette recommandation vaut également pour les opérations de taille "classique".</div></td><td><img width="200" height="150" src="Image/branche-morte-taille-2.gif" alt="taille complète" /><br /><div>Suppression totale des éléments</div></td></tr><tr><td><div style="text-align: justify;">On coupe nettement, ni trop "long" (en laissant un chicot propice aux maladies et aux parasites), ni trop court (en entamant le col et/ou la ride d'écorce).</div></td><td><img width="150" height="102" alt="taille au ras du bourrelet" src="Image/branche-morte-taille-1.gif" /><br /><div>Coupe bien positionnée</div></td></tr></tbody></table><br /><h2>Attendre le froid</h2><div style="text-align: justify;">Brûlez le bois supprimé. <br />Votre arbre a déjà meilleure allure; le bois restant est sain. Il reste à patienter quelques semaines, que les arbres entrent en dormance. On débutera alors la taille proprement dite. </div><br /><div class="step"><h1>Taille de fructification</h1><div class="chapo">Après la taille de formation vient la taille de fructification. Exemple avec le pommier, qu'une taille douce suffit à rendre productif chaque année.</div><br /><table cellspacing="0" cellpadding="0" border="0" style="width: 100%;"><tbody><tr><td><h2>Différentes tailles</h2><div style="text-align: justify;">Durant les quelques années qui suivent la taille de formation, on n'intervient généralement pas sur les arbres fruitiers, ce qui leur permet de s'organiser naturellement. <br />Il faut par la suite surveiller chaque arbre et intervenir certaines années et non tous les ans, comme on serait tenté de le penser. <br />On propose ici un aperçu de "taille douce", qui limite les interventions. Le pommier nous servira d'exemple, mais ces grands principes sont valables pour quantité d'autres arbres fruitiers. </div></td><td><img width="411" height="225" src="Image/taille-fruitier-eclaircie.jpg" alt="Eclaircie de la ramure (arbre fruitier)" /><br />Eclaircie de la ramure</td></tr></tbody></table><br /></div><h2>Objectifs de la taille</h2><div style="text-align: justify;">On va globalement se livrer à des opérations d'élagage, dont les buts sont multiples : </div><ul style="text-align: justify;"><li>maintenir une forme équilibrée</li><li>faire apparaître et se développer des organes qui fructifient </li><li>limiter l'encombrement des arbres</li></ul><div style="text-align: justify;">4 grandes opérations peuvent être pratiquées, qui toutes visent à stimuler naturellement la mise à fruit.<br /></div><h2>Eclaircir</h2><div style="text-align: justify;">Il faut que la ramure soit bien aérée pour que les feuilles et les fruits bénéficient d'un éclairement satisfaisant. <br />On va donc pratiquer sur l'ensemble de l'arbre (et pas seulement en son centre !) une opération de nettoyage, qui consiste à supprimer le bois mort, les branches mal placées, qui contrarient le développement des autres, les brindilles en surnombre... <br />C'est un "désépaississement", à l'image de celui que pratique le coiffeur dans votre chevelure ! <br />Pour travailler, n'hésitez-pas à prendre régulièrement du recul, ou faites-vous aider d'un assistant qui guidera votre main ! </div><br /><div style="border-top-width: thin;border-top-style: solid;border-top-color: rgb(153, 153, 153);border-bottom-width: thin;border-bottom-style: solid;border-bottom-color: rgb(153, 153, 153);background-color: rgb(238, 238, 238);"><strong>On coupe complètement<br /></strong><br />Un grand principe de taille : ne jamais couper une branche à moitié. Si on décide de supprimer une branche, on sectionne au ras d'un embranchement, jamais en plein milieu. Cette règle évite de laisser des chicots, et induit une cicatrisation à l'endroit où elle se réalise le mieux.</div><br /><br /><table cellspacing="0" cellpadding="0" border="0"><tbody><tr><td><img width="300" height="192" src="Image/taille-fruitier-rajeunissement.jpg" alt="Taille de rajeunissement" /><br />Bois vieux ou mort supprimé;<br />vert : Renouvellement </td><td><strong></strong><h2>Rajeunir</h2><div style="text-align: justify;">Après cette première opération, le rajeunissement va consister à anticiper le renouvellement des branches fruitières, qui s'opère naturellement. Pour cela, observez les branches : les pousses de renouvellement partent vers le haut. Celles qui ont déjà largement fructifié sont courbées vers le bas, de même que le vieux bois. C'est là encore une affaire de coup d'oeil. </div></td></tr><tr><td><img width="300" height="130" src="Image/taille-fruitier-simplification.jpg" alt="Simplification des branches" /><br />Simplification : taille en 1, 2 ou 3 </td><td><h2>Simplifier</h2><div style="text-align: justify;">Le principe est un peu le même que celui du rajeunissement. Mais l'on s'attaque cette fois à des branches épaisses, mal ramifiées, qui fructifient peu. Pour stimuler l'apparition de rameaux ployés, d'arcures propices à la mise à fruit, on va « simplifier » la structure, en supprimant des embranchements, en raccourcissant... <br />Cette opération, facultative et qui exige un peu plus d'habitude, induira l'apparition de nouveaux rameaux sur des branches vieillissantes. </div></td></tr></tbody></table><br /><h2>Réduire</h2><div style="text-align: justify;">Le terme réduction désigne la taille réalisée pour réduire l'encombrement d'un arbre fruitier devenu trop imposant. <br />Sans modifier, là non plus, la structure de l'arbre, on va raccourcir les extrémités des rameaux en les taillant à 1 ou 2 ramifications de l'extrémité. <br />On conserve ainsi la silhouette globale; le volume occupé est réduit; l'arbre va reprendre la ramification davantage vers l'intérieur. <br /></div><br /><h2>La bonne époque</h2><div style="text-align: justify;">Il n'y a pas de règle absolue, mais le coeur de l'hiver est une saison propice, à condition qu'il ne gèle pas. Pour pommier, poirier, pêcher ou abricotier, la première quinzaine de février est généralement bien adaptée. <br /></div><br /><br /><h1>Eclaircissage</h1><div class="chapo">Après la floraison viennent les fruits. Et souvent, ceux-ci sont en surnombre pour la taille de l'arbre. Du coup, les fruits n'ont pas la grosseur attendue... Il faut éclaircir! </div><br /><table cellspacing="0" cellpadding="0" border="0" style="width: 100%;"><tbody><tr><td><h2>Qu'est-ce que l'éclaircissage?</h2><div style="text-align: justify;">L'éclaircissage est une opération très simple, qui se pratique généralement dans le courant du mois de juin. Elle consiste à éliminer avant grossissement une partie des fruits produits par un arbre trop chargé, qui s'épuiserait avec une telle production.</div></td><td><img width="195" height="144" alt="sur le pommier, on conserve un fruit au centre du bouquet" src="Image/eclaircissage_1.gif" /></td>
    Je devrais pouvoir trouver 5 résultats, il n'y en a qu'un.

  4. #4
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Si la deuxième colonne (<td>) peut contenir des éléments avant et/ou après la balise <img />, on peut faire comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('%<td>.+?</td>\s*<td>.*?<img[^>]+>.*?</td>%s', $str, $res, PREG_PATTERN_ORDER);

  5. #5
    Membre actif
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 479
    Points : 281
    Points
    281
    Par défaut
    J'aurais dû préciser depuis le début qu'effectivement il y a des tableaux à deux colonnes dans la page html.

    Dans certains cas, les images sont dans la première colonne (<td><img...>texte></td><td>texte</td>), dans d'autres, elles sont dans la deuxième colonne (<td>texte</td><td><img...>texte></td>).

    Je viens de penser qu'il est plus simple de récupérer chaque ligne des tableaux, et de faire mon traitement sur la chaîne correspondant à chacune de ces lignes.

    J'utilise donc : <tr.+?</tr>

    Merci pour la piste.
    Je vais voir ce que ça donne...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Croisement de table avec exclusion
    Par daveInIreland dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/04/2007, 15h53
  2. Statistiques avec "exclusion"
    Par hexenez dans le forum OVH
    Réponses: 3
    Dernier message: 06/02/2007, 13h18
  3. [Access 2003] Sélection d'un table avec exclusion
    Par morpheez dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/11/2006, 11h16
  4. Requête avec exclusion
    Par illegalsene dans le forum Langage SQL
    Réponses: 5
    Dernier message: 01/02/2006, 11h07
  5. Utiliser un héritage avec exclusion mutuelle correctement
    Par akecoocoo dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 20/11/2005, 22h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo