0

当名称作为变量而不是字符串文字传入时,PHP gethostbyname() 返回名称而不是 IP

我在一些有价值的讨论中看到了类似的问题,但没有任何问题。

如果我将一个变量说 $domain 传递给 gethostbyname() 其中 $domain 是由 foreach 循环创建的字符串值,则返回值始终正是我输入的值 - 例如,如果 $domain =="google.com " 返回值为 google.com。使用字符串文字调用相同的函数 gethostbyname() 我得到了 IP 地址。gethostbyname('google.com')

这是一个已知的错误?有解决方法吗?我将不胜感激任何帮助。

谢谢

此代码失败 - 为结果生成 $url 的值:

foreach ($this->domainNames as $url){

            $ips[]=gethostbyname($url); 

    }

第二组代码两次给出正确的 IP 地址($this->domainNames 中的每个值一次:

foreach ($this->domainNames as $url){

            $ips[]=gethostbyname('google.com'); 

    }

解决方案:事实证明,这导致我的变量中有一些草率的空间,这些空间在创建我的 $this->domainNames 数组值时使用修剪修复。

4

1 回答 1

1

它会在gethostbyname()失败时执行此操作。来自 PHP 手册:

失败时返回 IPv4 地址或包含未修改主机名的字符串。

你所声称的不是真的。这个:

<?php
$domainNames = array("google.com", "google.com");

foreach ($domainNames as $url){
    echo gethostbyname($url); 
}   

输出:74.125.136.139两次

请提供 $domainNames 的转储,以便我们了解实际情况。

于 2016-04-08T19:19:31.457 回答