Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/11/2010, 23h33   #1
Membre du Club
 
Avatar de tom06440
 
Homme Thomas HERISSON
Développeur Web
Inscription : novembre 2004
Messages : 150
Détails du profil
Informations personnelles :
Nom : Homme Thomas HERISSON
Âge : 28
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2004
Messages : 150
Points : 67
Points : 67
Envoyer un message via MSN à tom06440 Envoyer un message via Skype™ à tom06440
Par défaut Aide débuggage preg_match_all

Bonsoir à tous

J'ai ce code :
Code :
preg_match_all('/^.*?<a .*?href="(.*?)".*?>.*?(<img .*?\/>).*?(.*?)<\/a>.*?$/ms', $paymentHook, $matches, PREG_SET_ORDER)
qui me permet entre autre de récupérer la valeur href d'un lien, jusque la tout va bien cela fonctionne.
Mais si le lien href contient une url encodée comme ci-dessous cela me renvoit une valeur de href vide ...
Code :
https://www.site.com/page.php?!c2lyZXQ9NDQ5MDE5NDYyMDAwMzQlMkQwMiZyZWZlcmVuY2U9c3BwMjAxMDExMjAyMzAyNTgmbGFuZ3VlPUZSJmRldmlzZT05NzgmbW9udGFudD0xOSUyRTk5JnRheGU9MCUyRTAwJmhtYWM9MzFERTU1MjU3RDYyQzg2MDAyQUYzQ0Q3ODYwOUJDODNFMDIxQTZFMCZ1cmxyZXRvdXI9aHR0cCUzQSUyRiUyRnd3dyUyRWxhYmVsJTJEY3JhdmF0ZSUyRWNvbSUyRm9yZGVyJTJEY29uZmlybWF0aW9uJTJFcGhwJTNGa2V5JTdEZGFlYjliNmE1NTQwNmExOTUzNzlhYjdlNmIxZjFhZjcmZW1haWw9aGVyaXNzb24lMkV0aG9tYXMlNDBnbWFpbCUyRWNvbSZhcmcxPTU2MTkmbW95ZW49Q0JTJm1vZGFsaXRlPTF4Jm9rVVJMPWh0dHAlM0ElMkYlMkZ3d3clMkVsYWJlbCUyRGNyYXZhdGUlMkVjb20lMkZvcmRlciUyRGNvbmZpcm1hdGlvbiUyRXBocCUzRmtleSU3RGRhZWI5YjZhNTU0MDZhMTk1Mzc5YWI3ZTZiMWYxYWY3JmJhZFVSTD1odHRwJTNBJTJGJTJGd3d3JTJFbGFiZWwlMkRjcmF2YXRlJTJFY29tJTJG==
Merci beaucoup de votre aide
tom06440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 23h56   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
déjà, on va simplifier: supprime tes ? apres les étoiles c'est inutile, une * ce n'est pas un +.
change de séparateur, utilise .... le #, ça évitera d'avoir des pb échappement d'échappement.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 21/11/2010, 00h04   #3
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
Code :
'#<a.*href="([^"]*)".*>.*</a>#i'
ceci devrai pouvoir suffire pour un href sur un lien dans un document correctement encodé. il y aura des situations ou cette règle sera prise en défaut mais bon...
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 00h09   #4
Membre du Club
 
Avatar de tom06440
 
Homme Thomas HERISSON
Développeur Web
Inscription : novembre 2004
Messages : 150
Détails du profil
Informations personnelles :
Nom : Homme Thomas HERISSON
Âge : 28
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2004
Messages : 150
Points : 67
Points : 67
Envoyer un message via MSN à tom06440 Envoyer un message via Skype™ à tom06440
merci pour cette réponse si rapide (et si tard en plus )

A priori elle fonctionne parfaitement pour mon soucis, je verrais bien à l'usage si je rencontre des problèmes autres, mais vu que j'utiliserais le même encodage d'url ça devrait le faire !

Encore un grand merci pour ton aide !
tom06440 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 00h42   #5
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
en fait je pensais surtout à des conditions ou tu as des liens imbriqués. Vu le nombre de points, l'expression régulière a le droit d'en oublier, sauf que son comportement habituel est d'avancer dans le motif aussitôt qu'elle le peut, c'est pourquoi un preg_match suffit à mon avis.

ensuite tu peux faire de la validation d'url via filter_var ou autrement pour distinguer les mailto: des https?:

résolu?
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h04.


 
 
 
 
Partenaires

Hébergement Web