Ereg adresse site

Résolu
lagombe Messages postés 45 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 mars 2008 - 27 déc. 2005 à 17:37
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 29 déc. 2005 à 20:34
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

lagombe Messages postés 45 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 mars 2008
29 déc. 2005 à 09:24
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
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
27 déc. 2005 à 17:51
Hello,
en 2 temps :
 
'`((?:https?|ftp)://\S+[[:alnum:]]/?)`si'
et
'`((?<!//)(www\.\S+[[:alnum:]]/?))`si'

Piqu&#233;es ici :
http://www.expreg.com/voir63
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
27 déc. 2005 à 17:52
Quand je dis en 2 temps...je veux dire qu'il faut un tableau avec ces 2 expressions, hein.
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
27 déc. 2005 à 17:57
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
27 déc. 2005 à 18:00
Salut malalam...

bon reveillon ?





Tu utilises \S, bonne idée. Mais, les ';', '"', '|', ... sont-t'ils rejetés ou capturés par le \S ?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
27 déc. 2005 à 18:04
Merci, oui, excellent, et toi ?

Je n'ai pas créé cette regexp :-) Mais à vue de nez, je dirais qu'ils sont rejetés.
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
27 déc. 2005 à 18:23
Moi depuis le reveillon, j'ai le nez tout rouge... il voit plus rien !
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
27 déc. 2005 à 19:33
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... .. .
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
27 déc. 2005 à 19:34
merde... foie et pas foi... quoique... .. .



@ tchaOo°




l'homme est un loup pour l'homme... .. .
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
27 déc. 2005 à 19:43
salut



|| $url==''



... Héritage de la fonction proposée dans la question... C'est tout !
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
27 déc. 2005 à 20:12
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... .. .
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 déc. 2005 à 00:29
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)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 déc. 2005 à 09:16
Le foie, m'en parlez pas...surtout que :
- on finit les restes de Noël
- il reste encore le 31 et le 1er...

:-(
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 déc. 2005 à 12:14
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)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 déc. 2005 à 12:18
Chuis pas très chocolat, heureusement pour ma santé !!

Par contre, le foie gras, le bon vin... ;-)
0
lagombe Messages postés 45 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 mars 2008
28 déc. 2005 à 16:18
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
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 déc. 2005 à 17:06
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)
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
28 déc. 2005 à 17:24
genre un truc comme ça ?



(\S+[\./])+\.\w{2,4}
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 déc. 2005 à 17:37
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)
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
28 déc. 2005 à 19:33
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... .. .
0
Rejoignez-nous