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

Était-ce utile?

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top