Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2703 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Utilisation des masques

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utilisation des masques

n°1256785
kjbstar
Posté le 01-12-2005 à 13:35:27  profilanswer
 

Hello,
 
Je bute depuis ce matin sur un problème d'un con, mais d'un con !
En fait, les masques (pour utiliser dans un preg_match) et moi, ca fait deux.
J'ai la liste, j'ai les fonctions, mais décidemment, je n'arrive pas à les placer correctement: je suis faché avec la syntaxe.
 
Donc voilà:
je souhaite contrôler la présence d'un lien retour, j'execute donc la vérification du code html correspondant...
Le meilleur résultat que j'ai pu obtenir:
- Si lien retour présent: ca marche, il me le trouve.
- Si lien retour absent: ca marche, il me dit qu'il n'y a rien.
- Si lien retour erroné: ca ne marche pas, il me dit qu'il le trouve quand même :/
 
Voici mon code actuel:

Code :
  1. $retour = "/[^<\/a><a.*?>$]".$_POST['lienretour']."/";


(bien entendu, $retour est inseré après dans le preg_match...)
 
J'imagine qu'il faut aussi préciser de prendre en compte lettres, chiffres, et espaces, mais même avec un [[:print:]], le résultat est le même... Je vais m'arracher les cheveux  :sweat:  
 
Merci pour votre aide !
 
kjb

mood
Publicité
Posté le 01-12-2005 à 13:35:27  profilanswer
 

n°1256790
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-12-2005 à 13:43:46  profilanswer
 

C'est n'importe quoi ta pattern :o
Tu cherches la chaine suivante:
la valeur de $_POST['lienretour'] non précédé des caractères suivants: "<", "/", "a", ">", "<", "a", ".", "*", "?", ">"
 
Est ce que tu pourrais montrer exactement une chaine de caractère que tu essayes de récuperer?

n°1256802
kjbstar
Posté le 01-12-2005 à 14:01:36  profilanswer
 

Hmmm, oui, j'ai voulu d'abord faire une recherche en fait, et je m'etais inspiré d'un exemple qui apparemment fonctionnait...  
D'ou effectivement le n'importe quoi.
Le code que j'avais avant, et qui produisait le même effet, etait le suivant:

Code :
  1. $retour = "/[^[:print:]$]".$_POST['lienretour']."/";


J'avais voulu faire au plus bête, en me disant que ca engloberait tous les caractères necessaires.
La prochaine fois je ne ferais pas de recherche ;p
 
En fait, je veux vérifier la présence du code exact dans une page:

Code :
  1. <a href="http://www.mondomaine.com">Mon site</a>


Actuellement, si le code est exact, le script me confirme sa présence. Si le code est absent, il me confirma sa non-présence. Mais si le code est erroné (par exemple, il manque les www), il me confirme quand même sa présence, alors que logiquement il ne devrait pas le detecter.
 
Voilà, d'ou mon problème de depucelage d'utilisation des masques... :)
 
kjb

n°1256811
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-12-2005 à 14:14:45  profilanswer
 

Ok quelques questions:
- Quelles sont les valeurs possibles de $_POST['lienretour'] ( www.monsite.com, monsite.com, http://monsite.com, http://www.monsite.com)
- Tes balises liens sont-elles toujours aussi réduites? pas d'attribut style ou ce genre de chose?
- Le texte du lien ( ici "Mon site" ) est-il toujours le même?
 
Quoi qu'il en soit en gros ta pattern devra ressembler à ça:

Code :
  1. /<a(.*?)href="$_POST['lienretour']"(.*?)>(.*?)</a>


avec le bémol en fonction des valeurs de $_POST['lienretour']

n°1256877
kjbstar
Posté le 01-12-2005 à 14:55:35  profilanswer
 

Eh bien en fait, pour être plus précis, j'avais englobé le code entier, et non seulement la variable, dans $_POST['lienretour'], car la variable est présente à 3 endroits différents:

Code :
  1. <a href="http://www.mondomaine.com/VARIABLE.html" target="_blank" title="Site VARIABLE">Site VARIABLE</a>


Aucun attribut de style, ce lien devant se retrouver sur le site de tel ou tel webmaster, et non sur le mien: c'est pour gérer les soumissions à un moteur de recherche (lien présent: validé; lien non présent: refusé).
Pourquoi cette variable ? Je veux laisser choisir un thème au webmaster.
 
Sur la page de soumission, ce que le webmaster doit faire:
- Generer ce fameux lien retour avec la VARIABLE de son choix.
- Indiquer l'url ou il a placé ce lien retour.
- Valider l'indexation dans le moteur.
 
En me basant sur ton exemple (c'est vrai que j'aurais pu faire comme ca dès le départ, en plus...), j'ai fait logiquement ceci:

Code :
  1. $retour = "/<a(.*?)href=\"http://www.mondomaine.com/".$_POST['lienretour'].".html\"(.*?)target=\"_blank\"(.*?)title=\"Site(.*?)".$_POST['lienretour']."\">Site(.*?)".$_POST['lienretour']."</a>/";


J'obtient alors un Warning: preg_match(): Unknown modifier '/'
J'ai essayé de faire accepter les slash ( ([\/]) ??), mais ca n'a pas eu l'air de fonctionner...
 
kjb

n°1256885
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-12-2005 à 15:00:17  profilanswer
 

backslash les slashs et les points! le target est is obligatoire(je pense pas donc je le vire ;) )?

Code :
  1. /<a(.*?)href="http:\/\/www\.mondomaine\.com\/$tavariable\.html"(.*?)title="Site $tavariable"(.*?)>Site $tavariable<\/a>/


Attention si le title se retrouve avant le href ça marche plus!!!


Message édité par anapajari le 01-12-2005 à 15:01:24
n°1256926
kjbstar
Posté le 01-12-2005 à 15:22:59  profilanswer
 

Ah effectivement, je ne backslash que les " ...
Mais ca fait 10 minutes que je me coltine un Warning: preg_match(): Unknown modifier 'a' ...  :pt1cable:  
J'ai essayé de jouer avec les guillemets, j'ai verifié et reverifié, rien n'y fait ;D
 
kjb

n°1256950
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-12-2005 à 15:54:15  profilanswer
 

t'as pas du backslasher le dernier / dans "</a>"

n°1256960
art_dupond
je suis neuneu... oui oui !!
Posté le 01-12-2005 à 16:00:10  profilanswer
 

faut aussi
 
\<
 
\>
 
 
il me semble


Message édité par art_dupond le 01-12-2005 à 16:00:40
n°1257014
kjbstar
Posté le 01-12-2005 à 17:03:55  profilanswer
 

anapajari a écrit :

t'as pas du backslasher le dernier / dans "</a>"


Aaaaaaaah misère de misèreuuuuuu.
 
Effectivement, après avoir passé mon après-midi sur ce satané bout de code, et surtout après m'être detendu un peu avec un need for speed, le truc tout con se montre de lui-même tout seul... J'avais bien zappé le dernier slash dans la fermeture de balise.
 
Un grand merci à toi anapajari, tu m'ôtes un sacrée épine du pied  :jap:  
Et gracias aussi à art_dupond !
 
Allez hop, bonne soirée  :hello:  
 
kjb


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Utilisation des masques

 

Sujets relatifs
Pblm utilisation Dev C++ pour du C[VBScript] Utilisation de transactions
utilisation du port parallele sous windows XPOptimiser utilisation du serveur par MySQL
utilisation d'une variable ??Utilisation variable XSL
Utilisation d'une liste dans une listePL/SQL Utilisation de cursor
[VB.NET/Mysql] Utilisation de MysqlConnector[Tips] Utilisation de masques avec Oracle
Plus de sujets relatifs à : Utilisation des masques


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR