Expressions régulières PHP
Résolu/Fermé
Coutcout86
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016
-
10 juil. 2012 à 09:41
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 10 juil. 2012 à 16:18
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 10 juil. 2012 à 16:18
A voir également:
- Expressions régulières PHP
- Easy php - Télécharger - Divers Web & Internet
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- Href php ✓ - Forum PHP
- Bouton php - Forum PHP
- Echo image php ✓ - Forum PHP
2 réponses
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
10 juil. 2012 à 10:13
10 juil. 2012 à 10:13
Salut,
Si tu as une seule chose à récupérer, ce n'est pas la peine de capturer "http://", ni le domaine.
Ton expression peut ressembler à cela :
Cette expression donnera le résultat attendu si :
- la chaine commence par "http://",
- le nom de l'académie comporte au moins un caractère,
- ce nom est situé entre "http://" et ".paiformance-dev.fr",
- la chaine comporte une seule fois ".paiformance-dev.fr",
- il peut y avoir des caractères postérieurs au nom de domaine, ou non.
Dal
Si tu as une seule chose à récupérer, ce n'est pas la peine de capturer "http://", ni le domaine.
Ton expression peut ressembler à cela :
/^http:\/\/(.+)\.paiformance-dev\.fr.*/
Cette expression donnera le résultat attendu si :
- la chaine commence par "http://",
- le nom de l'académie comporte au moins un caractère,
- ce nom est situé entre "http://" et ".paiformance-dev.fr",
- la chaine comporte une seule fois ".paiformance-dev.fr",
- il peut y avoir des caractères postérieurs au nom de domaine, ou non.
Dal
Je te suggère de passe d'abord par la fonction parse_url()
http://fr.php.net/parse_url
Puis passer $resultat['host'] à une regexp de ce type:
$regExp = '/^([^\\.]+)(\\..*)$/'
qui va faire des captures de 2 éléments :
- La 1ère partie qui va jusqu'au 1er "."
- Le reste
Sinon, quelques manipulations sur explode('.', $resultat['host']) peut faire l'affaire.
http://fr.php.net/parse_url
Puis passer $resultat['host'] à une regexp de ce type:
$regExp = '/^([^\\.]+)(\\..*)$/'
qui va faire des captures de 2 éléments :
- La 1ère partie qui va jusqu'au 1er "."
- Le reste
Sinon, quelques manipulations sur explode('.', $resultat['host']) peut faire l'affaire.
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
10 juil. 2012 à 16:18
10 juil. 2012 à 16:18
Heu. ta regexp serait plutôt :
Ta regexp ne fonctionne correctement que s'il y a un seul sous-domaine. Sinon, elle va prendre le sous-sous-domaine.
Sinon, utiliser parse_url() est une bonne idée pour extraire sans trop se casser la tête le nom d'hôte :-)
Dal
/^([^.]+)(\..*)$/Non ? Dans les délimiteurs de classes, le point n'a pas à être échappé. Et dans la seconde capture, je ne comprend pas pourquoi tu échappes deux fois (en faisant cela, tu matches l'antislash... comme dans le délimiteur de classe d'ailleurs).
Ta regexp ne fonctionne correctement que s'il y a un seul sous-domaine. Sinon, elle va prendre le sous-sous-domaine.
Sinon, utiliser parse_url() est une bonne idée pour extraire sans trop se casser la tête le nom d'hôte :-)
Dal