2012-04-01 3 views
0

J'essaie de résoudre un nom d'hôte en PHP et je ne peux pas utiliser la fonction intégrée gethostbyname car elle ne supporte pas l'option timeout, donc j'essaye de résoudre ce problème en levant les yeux le nom d'hôte avec nslookup ou host. Le problème est que ces fonctions/programmes ne renvoient pas le résultat simple mais quelque chose commenslookup/host parsing PHP

 
Non-authoritative answer: 
Name: google.de 
Address: 173.194.35.159 
Name: google.de 
Address: 173.194.35.151 
Name: google.de 
Address: 173.194.35.152 

Quelqu'un sait-il une fonction rapide en PHP pour analyser que donc il retourne juste la première Adresse IP? Merci.

Répondre

0

Cette expression régulière pourrait être améliorée mais elle fera l'affaire.

Si votre sortie est dans les lignes $, alors vous pouvez utiliser

preg_match('/Address: ([0-9\.]*).*/', $lines, $matches); 

Ensuite, le premier match sera stocké dans

$matches[1] 
+0

Je vais faire un essai, merci. – Stefan

+0

Cela échouera pour IPv6. Utilisez '[0-9a-f.:]' Pour le faire fonctionner pour les deux versions de protocole. Oh, et vous n'avez pas besoin d'échapper '.' dans une classe de personnage. – ThiefMaster

+0

Bons points, ThiefMaster. – jcbwlkr