6
votes

Extraire le domaine de l'URL (y compris les hards)

J'essaie d'écrire (ou de trouver simplement une méthode existante) PHP pouvant prendre un lien et extraire l'URL. L'astuce est, il doit tenir sous le poids des domaines d'apparence étranges comme: xxx

en regardant moi-même avec des yeux humains, je l'ai toujours deviné de manière incorrecte: pensait que le domaine serait kku.ac.th mais cela donne une erreur DNS lors de la visite.

Donc, tout le monde sait un bon moyen d'extraire de manière fiable le domaine de l'URL: xxx


4 commentaires

Whois dit kku.ac.th est le domaine. Je suppose qu'ils n'ont pas configuré l'enregistrement DNS correct demandé pour les navigateurs Web (par opposition à MX, etc.).


Je pense qu'un disque était le terme que je cherchais!


@Martin, merci de pointer cela.


Passez une variable d'environnement via votre serveur Web (telle que Apache / NGinx / IIS) pour suivre une trace de 2 $ _Server ['nom_serveur']. J'utilise $ _Server ['host_root'] pour stocker la base du site. Ensuite, vous pouvez simplement vérifier la fin de parse_url ($ url) ['hôte'] avec Strows pour host_root et lob le reste en $ sous-domaines = exploser ("", $ theest);


3 Réponses :


8
votes

Peut-être que le parse_url fonction pourrait aider , ici?


Dans votre cas, avec ces URL, la partie suivante du code: xxx

donne cette sortie: xxx


1 commentaires

Merci Pascal, qui résout une partie de mon problème, merci beaucoup, mais ce n'est pas tout ce qui me préoccupe. Pekka cloque plus en bas, alors je choisirai probablement sa réponse pour les futurs lecteurs.



6
votes

php a le parse_url () fonction qui vous aidera à faire la division de base dans le protocole, hôte , port, et ainsi de suite.

S'éloigner du domaine "droit" dans des cas incertains, cela est extrêmement difficile à dire car parfois, "TLD de deux parties" constitue une mesure de l'autorité TLD (par exemple au Royaume-Uni) et parfois des entreprises privées (par exemple .uk.com ). Je pense que vous ne serez pas au courant des listes de domaines de niveau supérieur qui ont deux parties comme

  • .co.uk
  • .ac.uk
  • .ac.th

    Ces fins seraient traitées telles que TLDS ( haut niveau domaines de niveau), avaler la deuxième partie.

    C'est le seul moyen de distinguer de manière fiable "TLDS en deux parties" comme .co.uk - où server1.ibm.co.uk (où les deux -Part .co.uk doit être supprimé pour déterminer le domaine lui-même) à partir de sous-domaines réguliers tels que server1.ibm.com (où .com doit être supprimé).

    Un bon point de départ pour obtenir une liste de nombreuses "TLD de deux parties" est la recherche de domaine sur speednames.com (sélectionnez "Tous" dans les pays). Une liste plus complète peut être trouvée sous la forme Partie de la bibliothèque Domaine Ruby .



0
votes

avec rubis, vous pouvez utiliser la bibliothèque Domaineatrix / gem

http://www.pauldix.net/2009/12/parse-domains-de-urls-asily-with-domainatrix.html P>

require 'rubygems'
require 'domainatrix'
s = 'http://www.champa.kku.ac.th/dir1/dir2/file?option1&option2'
url = Domainatrix.parse(s)
url.domain
=> "kku"


0 commentaires