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: en regardant moi-même avec des yeux humains, je l'ai toujours deviné de manière incorrecte: pensait que le domaine serait Donc, tout le monde sait un bon moyen d'extraire de manière fiable le domaine de l'URL: p> kku.ac.th code> mais cela donne une erreur DNS lors de la visite. p>
3 Réponses :
Peut-être que le donne cette sortie: p> parse_url code>
strong> fonction pourrait aider , ici?
Dans votre cas, avec ces URL, la partie suivante du code: p>
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.
php a le parse_url () fonction qui vous aidera à faire la division de base dans le protocole, hôte , port, et ainsi de suite. P>
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 Ces fins seraient traitées telles que TLDS ( haut niveau em> domaines de niveau), avaler la deuxième partie. p>
C'est le seul moyen de distinguer de manière fiable "TLDS en deux parties" comme 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 a>. p> .uk.com code>). Je pense que vous ne serez pas au courant des listes de domaines de niveau supérieur qui ont deux parties comme p>
.co.uk code> - où
server1.ibm.co.uk code> (où les deux -Part
.co.uk code> doit être supprimé pour déterminer le domaine lui-même) à partir de sous-domaines réguliers tels que
server1.ibm.com code> (où
.com code> doit être supprimé). p>
Je pensais la même chose concernant "Je pense que tu n'auras pas la maintenance des listes de domaines de haut niveau qui ont deux parties" y a-t-il une liste? J'ai essayé Wikipedia et ne pouvais trouver que la liste normale en.wikipedia.org/wiki/list_of_internet_top-level_domains < / a>
@karl Je ne pense pas qu'il y ait une liste officielle, car beaucoup d'entre elles sont des entreprises privées. Vérifiez les speednames, ils ont beaucoup de "TLD de deux parties" dans leur portefeuille. C'est un bon début je pense.
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"
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);