Expressions régulières PHP

Résolu
Coutcout86 Messages postés 195 Date d'inscription   Statut Membre Dernière intervention   -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je ne suis pas un grand adepte des expressions régulière en PHP donc j'aimerais savoir comment faire pour matcher ceci :

http://ac-strasbourg.paiformance-dev.fr

et resortir un tableau sous cette forme :

Array{

[0] = > http://
[1] => ac-strasbourg
[2] => .pairformance-dev.fr
}

Ce qui m'intéresse c'est de récupérer le nom de l'académie donc le nombre de mots varie en fonction de l'académie. Pourriez-vous m'aider?

Merci d'avance.



A voir également:

2 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 :

/^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
0
A.Nonymous
 
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.
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Heu. ta regexp serait plutôt :
/^([^.]+)(\..*)$/
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
0