php - extraction du nom d'hôte regex
-
06-07-2019 - |
Question
Je cherchais une expression regex qui cracherait uniquement la partie "stackoverflow" et aucun site www. ou .com, etc. Tout ce que je pouvais trouver était de vérifier si les URL étaient valides ... J'ai utilisé le filtre URL de php pour déterminer ce que je cherche maintenant à déterminer de quel site il s'agit.
Comme je n'ai jamais écrit d'expression auparavant, j'espère que quelqu'un pourra la vérifier / recommander une meilleure solution.
preg_match('@^(?:http://)(?:www.)?([^.]+)@i', $url, $matches)
modifier: Toutes les URL que je traite sont .com si cela aide
La solution
une ligne sans utiliser d'expressions régulières !!!
$url = 'http://stackoverflow.com';
$d = array_shift( explode( '.', str_replace('www.', '', parse_url( $url, PHP_URL_HOST )) ) );
echo $d;
Autres conseils
Avez-vous considéré la fonction de PHP parse_url () de PHP?
Si vous savez que ce que vous rencontrez est une URL, le domaine se termine en .com par une chose simple comme
.preg_match('#([^\.]*)\.com#', $url, $matches);
devrait faire l'affaire.
Bien que cela échoue sur un domaine tel que www.com.foo.com
, cela peut être suffisant, selon votre situation.
preg_match('#https?://(?:www.)?(.*?)\.com#i', $str, $match);