Aide sur une expression réguliere

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Aide sur une expression réguliere

par sadeq » 26 avr. 2007, 10:03

oops, j'ai oublié de me connecter, l'invité c'est moi. :wink:

par Invité » 26 avr. 2007, 09:57

A ça tu l'as pas dit,
Essaye donc cette forme :

Code : Tout sélectionner

'^<a [^>]*(class=["\']lienFleche1["\'][^>]*href=["\']([^"\']*)["\']|href=["\']([^"\']*)["\'][^>]*class=["\']lienFleche1["\'])[^>]*>([^<]*)</a>$'
Qui veut dire:
^<a : la chaîne traitée doir commencer par <a

class=["\']lienFleche1["\'][^>]*href=["\']([^"\']*)["\'] : cherche le critère "class=..." avant href
| : ou bien
href=["\']([^"\']*)["\'][^>]*class=["\']lienFleche1["\'] : cherche le critère "class=..." après href

>([^<]*)</a>$ : le titre du lien devant se terminer par </a>

Les formes :
[^>]* : cherche tou avant un > pour rester dans la balise ouverte
[^<]* : cherche tout avant un < pour rester hors de l'ouverture d'une balise
[^"\']* : cherche tout avant " ou ' dans notre cas oblige de traiter le texte entre guillemets ou apostrophes

Voici un code php qui vérifie cette régle (qui peut être simplifiée aussi)
<pre>
<?php
$str = '<a  class="lienFleche1" target="_blank"  sytle="color:red"  href=\'http://www.google.com\' align="left" class="lienFleche1" title="lien">titre_url</a>';
preg_match('#^<a [^>]*(class=["\']lienFleche1["\'][^>]*href=["\']([^"\']*)["\']|href=["\']([^"\']*)["\'][^>]*class=["\']lienFleche1["\'])[^>]*>([^<]*)</a>$#', $str, $m);
print_r($m);
?>
</pre>

par Expreg » 25 avr. 2007, 21:54

En apnée, sans réfléchir :
<?php
preg_match_all('`<a(.*?)class="lienFleche1"(.*?)>([^<]+)</a>`i',$texte,$out);
?>
Faire le tri dans $out[1], $out[2] et $out[3]

par Invité » 25 avr. 2007, 14:59

Je cherche tout les liens avec l'attribut class="lienFleche1">, ce n'est donc pas la réponse que j'espérait ... :cry:

par sadeq » 25 avr. 2007, 12:50

Essaye ça:

Code : Tout sélectionner

'^<a .*href="(.*?)".*>(.*?)</a>$'

Aide sur une expression réguliere

par Invité » 19 avr. 2007, 18:50

Bonjour,

Voila je cherche simplement à extraire la valeur du href et le nom du lien d'une balise <a>

Exemple:

Code : Tout sélectionner

<a href="http://www.google.com" class="lienFleche1">titre_url</a>
je voudrai récupérer "http://www.google.com" et "titre_url".
j'utilise donc une expression régulière:
'/<a\s+href="(.*?)"\s+class="lienFleche1"\s*>(.*?)<\/a>/s'
La pas de problème, je récupère bien les infos, mais la ou ca bloc c'est dans un cas comme celui la :

Code : Tout sélectionner

<a class="lienFleche1" href="http://www.google.com">titre_url</a>
La évidemment mon expression ne marche pas ... comment faire sans utiliser une 2e expression ?

Merci !