Ereg adresse site

[Résolu]
Signaler
Messages postés
45
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 mars 2008
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Bonsoir à tous,



et pour commencer bonnes fêtes de fin d'année...

voilà j'ai un petit problème avec les expressions régulières... j'ai
récupéré sur le site un bout de code nickel pour tester l'adresse d'un
site...

function verif_site($url)

{

if(ereg("^[www.]+[_a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$", $url) || $url=='')

return true;

else

return false;

}

ok... c'est une fonction qui fonctionne sans souci, si ce n'est que les
personnes qui ont des pages perso du style "perso..." vont se voir
refuser leur url. J'ai bien tenté de faire un truc mais ça foire
lamentablement... comment faire?

merci d'avance

lagombe

33 réponses

Messages postés
45
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 mars 2008

alors là vous m'épatez... ça part dans tous les sens je ne sais pas où donner de la tête, surtout que j'ai fait aussi un petit truc... :
function verif_web($url)
{
if(ereg("^[a-zA-Z]+\.[_a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$", $url) || ereg("^[a-zA-Z]+\.[_a-zA-Z0-9.-]+\.[a-zA-Z.\/]+$", $url) || $url=='')
return true;
else
return false;
}
ça a l'air de fonctionner... maintenant il est clair que certaines adresses peuvent passer au travers alors qu'elle sont mal construite...
mais bon je commence à fatiguer... ;-) merci encore en tout cas...


lagombe
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,
en 2 temps :
 
'`((?:https?|ftp)://\S+[[:alnum:]]/?)`si'
et
'`((?<!//)(www\.\S+[[:alnum:]]/?))`si'

Piqu&#233;es ici :
http://www.expreg.com/voir63
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Quand je dis en 2 temps...je veux dire qu'il faut un tableau avec ces 2 expressions, hein.
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
8
Salut,



Et merci pour le souhait de bonnes fêtes... De même pour toi !



Concernant ton souci de regexp, il faut que tu comprennes quoi-elle-fait ta regexp. Après, tu trouveras tout seul la solution...



D'ailleurs, alors que je commence à t'expliquer la regexp, j me rend compte qu'elle est mal formée !!!



^[www.]+[_a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$



^ => début de la chaine

[www.] => un w, ou un w, ou un w, ou n'importe quoi

+ => au moins une fois le truc précédant

[_a-zA-Z0-9.-]+ => au moins un _, ou une lettre minuscule, ou un lettre majuscule ou un chiffre ou n'importe quoi ou un -



...

J'arrète là, elle est débile ta regexp :(





Voici la solution toute cuite : (Mais renseigne toi sur les regexp pour les utiliser, c'est mieux)



function verif_site($url) {

if(preg_match("/^[_\w\d-]+\.[\w]{2,4}$/", $url) || $url=='')

return true;

else

return false;

}





note : cette fonction ne marche pas pour

$url = 'http://www.phpcs.com/forum.v2.aspx?ID=627431';

(à cause des ':', '/', '?', '=' et '&')

C'est ce que tu veux, n'est-ce pas ?



note bis : preg est mieux que ereg (pour plein de raison que tu trouveras détaillées sur fr.php.net)





A+
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
8
Salut malalam...

bon reveillon ?





Tu utilises \S, bonne idée. Mais, les ';', '"', '|', ... sont-t'ils rejetés ou capturés par le \S ?
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Merci, oui, excellent, et toi ?

Je n'ai pas créé cette regexp :-) Mais à vue de nez, je dirais qu'ils sont rejetés.
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
8
Moi depuis le reveillon, j'ai le nez tout rouge... il voit plus rien !
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

LOol... moi c'est le foi qui est tout rouge... .. .



J_G... pourquoi le...



|| $url==''



Dans ta condition... .. ?



Sinon il y a celle là qui est pas mal car elle tient compte du nom de domaine... par contre elle est longue...



http://www.regexlib.com/REDetails.aspx?regexp_id=381



Faut juste rajouter



(https?\:\/\/|)(www\.|)



devant pour qu'elle tienne compte du http(s) et du www.



Par contre je suis pas sur qu'elle accepte les dns à double extension genre .fr.st



@ tchaOo°






l'homme est un loup pour l'homme... .. .
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

merde... foie et pas foi... quoique... .. .



@ tchaOo°




l'homme est un loup pour l'homme... .. .
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
8
salut



|| $url==''



... Héritage de la fonction proposée dans la question... C'est tout !
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Ah oki... j'avais pas fait attention... donc l'url peut être vide mais pas invalide... .. .



à ce moment la autant faire...



function verif_site($url) {

if(preg_match("/^[_\w\d-]+\.[\w]{2,4}$/", $url) || empty($url))

return true;

else

return false;

}



Je sais c'est un détail... .. .



@ tchaOo°


l'homme est un loup pour l'homme... .. .
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Salut,

\s corespond à nimporte quel caractère vide (tabultation, espace...)

\S corespond aux autres caractères....



moi j'avais :




<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Kate, the KDE Advanced Text Editor">

'http://\\S+)\\s?'

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Le foie, m'en parlez pas...surtout que :
- on finit les restes de Noël
- il reste encore le 31 et le 1er...

:-(
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Salut,

l'abus de chocolat est dangereux pour la santée....

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Chuis pas très chocolat, heureusement pour ma santé !!

Par contre, le foie gras, le bon vin... ;-)
Messages postés
45
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 mars 2008

moi non plus je ne suis pas trop chocolat ;-) préfère aussi le canard
(pas seulement le foie) et une bonne bouteille... pour revenir à des
choses qui fâchent... je n'ai pas trouvé mon bonheur dans les solutions
proposées... mais je pense aussi m'être mal exprimé... :

je cherche à valider une url de la forme habituelle "www.nom.extension"
(sans le http://) mais aussi les pages personnelles qui ne commencent
pas toujours par www du style "perso.nom.fr/coucou/"...

merci pour vos contributions.

lagombe
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Salut,


'http://\\S+)\\s?'



la t'as pas de www... si t'as ni http ni www, tu ne peux pas détecter le fait que ça soit une Url...


In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
8
genre un truc comme ça ?



(\S+[\./])+\.\w{2,4}
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
J_G ça pourrait être un dossier.... ou alors l'emplacement d'un fichier...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

Normalement si tu prend la reg exp que je t'ais donné ça doit passer...



function verif_site($url)

{

if(preg_match("/^(https?\:\/\/|)(www\.|)[a-zA-Z0-9]+([a-zA-Z0-9\-\.]+)?\.(aero|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gouv|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|info|int|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|
ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|
pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|
st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zr|zw)+$/i", $url) || empty($url))

return true;
} else {
return false;
}
}




ou alors faut pas tester avec une expression régulière vu que ça peut
être n'importe quoi mais ouvrir un socket pour voir si l'adresse existe
mais perso j'en vois pas trop l'interet... .. .



@ tchaOo°

l'homme est un loup pour l'homme... .. .