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

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:36
Par contre je vois toujours pas l'interet du empty($url)... mais bon... .. .



@ tchaOo°



ps : désolé la regexp est monstrueusement longue... .. .




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 à 19:56
lol, pourquoi se faire chier avec tout ça ??? franchement, c'est la mienne la plus simple...

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 à 21:17
1 parce que le monsieur veut pas forcement de http (donc je suis pas sur que la tienne passe )



2 parce que l'avantage de la liste d'extension c'est que si on rentre
une extension qui existe pas elle passe pas contrairement avec la
tienne... le désavantage c'est qu'elle est grave longue... .. .


@ 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 à 22:08
Salut,

faudrait faire des benchs sur un texte et comparer lesquels sont les plus rapides... je vous renvoi le résultat ce soir promis !


j'en profite pour ajouter à mon expression quelques petites choses....


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

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
28 déc. 2005 à 22:49
Excellent kankrelune... J'aime beaucoup ;)



(pour le empty($hurle) > p't'êt'e qui veut pas jeter les gens qui ne mettent pas d'url dans le formulaire...)



Et puis, z'y va !

Tant qu'on y est, je vais vous proposer ma methode de vérif des URL

(inventée sur le tas ces 10 dernières secondes) :



<?php



$url = '???';



if(substr($url,0,7)!='http://') $url = "http://$url"; // je mets des guillemets juste pour vous embéter...



$test = @fopen($url, 'r');



if( $test ) {

echo 'Cool, elle le fait c't'URL !!!';

fclose($url);

}

else echo $url.' === Tout naze :(';



?>
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 à 23:00
/(s?(http|ftp)s?|news):\/\/[_a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\\s?/i

$a= preg_match_all( ' /www.[_a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\s?/i', $texte, $urls);

ne trouve pas les adresses qui ont un dossier ensuite...

[auteurdetail.aspx?ID =377168 kankrelune] , ton expression commence par :

'/^(https?\:\/\/|)(www\.|)[a-zA-

donc, il faut obligatoirement une adresse http, et obligatoirement les www.... je modifie et je fais les benchs...

faut-il mieux utiliser :

(s?(http|ftp)s?|news)

ou

(http|https|ftp|sftp|news)

?

code:, temps d'exécution pour 100 calculs (en milisecondes), ----
global $texte;
$a=preg_match_all('/(s?(http|ftp)s?|news):\/\/\S+\s?/i', $texte, $urls);, 18.5625729561, ----
global $texte;
$a=preg_match_all('/(http|https|ftp|sftp|news):\/\/\S+\s?/i', $texte, $urls);, 153.710473061






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

Bon, on voit nettement la différence... j'ai fais plusieurs tests, et ça donne toujours ça... (le texte est long, et ce sont des preg, donc, 100, c'est représentatif...)


code:, temps d'exécution pour 100 calculs (en milisecondes), ----
global $texte;
$a=preg_match_all('/(s?(http|ftp)s?|news):\/\/\S+\s?/i', $texte, $urls);, 155.058032036, ----
global $texte;
$a=preg_match_all('/(s?(http|ftp)s?|news):\/\/\S+[[:alnum:]]\s?/i', $texte, $urls);, 304.11284399



bon, après ma solution vaut mieux que celle de malam...





j'ai ajouté un \S dèrière la tienne pour qu'elle prenne en compte les
dossiers qui suivent les urls... je ne la recopie pas car elle est trop
longue, mais bon, elle est plus lente...


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 à 23:17
Sympa les tests...





pourquoi dis-tu :

le texte est long, et ce sont des preg, donc, 100, c'est représentatif...


Selon tes test, les ereg sont-ils plus rapides ?

Car dans php.net ils disent une chose comme-ça :

Astuce :
PHP supporte aussi des expressions rationnelles compatibles Perl,

avec
l'extension PCRE functions. Ces fonctions
supportent des recherches

non-gourmandes, des assertions, des sous-masques
conditionnels et toute une

gamme de fonctionnalités absentes des
expressions rationnelles POSIX.



Alors ben j'ai abandonné les ereg



Bonne idée ou pas ?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
29 déc. 2005 à 09:41
" bon, après ma solution vaut mieux que celle de malam..."

=> pourquoi ? Ensuite, ce n'est pas la mienne, mais celle d'Yves, le créateur du site www.expreg.com. (une pointure dans le domaine...)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
29 déc. 2005 à 11:11
Salut,


malam = > parceque benchmarks...



[auteurdetail.aspx?ID=202329 lagombe] => ta
solution n'est pas super bien parcequ'elle ne prends pas toutes les
adresses et ne prends pas les dossiers... donc, utilise une autre
solution...



Je n'ai jamais comparé en profondeur ereg et preg, mais on dit souvent
que preg est plus rapide (je crois qu'antho avait fait des benchs...)
preg est théoriquement plus rapide car il ne fait pas appel à perl...



Ma solution est la plus simple, et souvent, au niveau des expressions régulières, ça fait quelquechose de rapide....

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
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 à 14:23
elle ne prend pas les dossiers, c'est-à-dire?

lagombe
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
29 déc. 2005 à 15:17
Salut,


http://monsite.mondomaine/mondossier/monfichier.html



ça ne sera pas pris par ton expression, de même pour le site



http://monsite.mondomaine/mondossier/


ou



http://monsite.mondomaine/mondossier

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
29 déc. 2005 à 20:30
[auteurdetail.aspx?ID=377168 "kankrelune] , ton expression commence par :

'/^(https?\:\/\/|)(www\.|) donc, il faut obligatoirement une adresse http, et obligatoirement les www"



Bah non puisque dans les deux il y a un |(vide))... normalement ça
marche... un ? aurait aussi fai t l'affaire mais normalement ça
passe... .. .



@ 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
29 déc. 2005 à 20:34
ah, je conaissais pas...

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
Rejoignez-nous