Probleme simple avec un RegExp

M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008 - 21 janv. 2008 à 12:23
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 - 21 janv. 2008 à 17:30
Bonjour à tous,

j'ai un petit soucis qui ne doit pas être trop compliqué pour certains d'entre vous, voilà:

Dans la chaine suivante:

preg_match('@[*>](?)([^<]+)@i',
    'ac&page=1&userid=UIDREQUEST << Pr&#233;c&#233;dent', $matchesB);
$hostB = $matchesB[1];

 je souhaite extraire l'intitulé du lien ( devrai donner :    << Précédent   )

hors mon regexp me dit qu'il est vide en raison des carractères spéciaux qui sont assimilés aux balises html.

Avec un preg_replace comme ci-dessous, je ne solutionne pas.

$Extract =preg_replace("`>`","&gt;",$Extract);

Je n'obtiens pas une chaine vide mais le résultat n'est pas acceptable car j'obtiens :

<< Précédent

Comment puis-je faire?

NB !
Ne tenez pas compte des couleurs, c'est juste pour vous faciliter la lecture.

Pour plus d'info afin de mieux comprendre...
Une variable contient un lien, je récupère d'un coté l'url vers laquelle pointe le lien
et de l'autre, je récupère son intitulé.
je procède comme suit:

                   preg_match('@^(?:](?)([^<]+)@i', $Extract, $matchesB);
                   $IntituleLien = $matchesB[1];

Avec 99% des liens c'est ok, mais pas avec les liens qui contiennent ce type de caractères dans leurs intitulés.
J'ai le même problème avec :    Suivant >>

D'avance, merci pour votre aide

Autodidact, je ne demande qu'à apprendre... Merci de votre aide

3 réponses

codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
21 janv. 2008 à 13:56
perso quand j'arrive pas avec les expressions régulières, je fait avec strpos et strrpos, tu cherche la position du premier >, ensuite tu récupere la suite et tu recommence et tu à le début de ta chaine, ensuite tu cherche le dernier < que tu enleve, et tu refait la meme opération et hop, tu à ta chaine :p
0
M000004965 Messages postés 147 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 12 juin 2008
21 janv. 2008 à 17:25
pour ça il faut connaître à l'avance la syntaxe....

ce n'est pas mon cas, je ne connaît pas à l'avance ce qui est saisi pour titrer le lien et j'ai de tout !!!
j'ai déjà pas mal galéré avec les images cliquables, c'est réglé précisément en effectuant un strpos sur balise image
mais là c'est difficilement réalisable parce que des carractères comme ceux là, il y en a plusieurs...

je reste convaincu qu'une expression régulière est ce qu'il y a de mieux parce que je pourai inclure tout les cas de figures tout en gardant un code propre...

mais merci pour ton conseil

Autodidact, je ne demande qu'à apprendre... Merci de votre aide
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
21 janv. 2008 à 17:30
En effet si tu ne sais pas à quoi t'attendre (juste une balise a, une balise a, font, div, etc), il vaut mieux utiliser les expressions régulieres.

Dans ce cas celle qui me vient à l'esprit, au niveau algorithmique, c'est de faire un :
j'enleve toutes les balises ouvrantes, puis les balises fermantes (en gros tant que t'a des <....> tu les enleves, ensuite tant que tu a des </....> tu les enleves) et tu récuperera le message.
Encore faut-il que tu ne commence pas à partir de :p

Ca dépend beaucoup de comment tu t'y prends en fait !

tu peux récupérer tous tes a, et ensuite faire la méthode que je viens d'expliquer, ca devrait marcher
0
Rejoignez-nous