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

PHP gethostbyname() returning Name instead of IP when the name is passed in as a variable rather than a string literal

PHP gethostbyname() return 当名称作为变量而不是字符串文字传入时使用名称而不是 IP

我在一些有价值的讨论中看到了类似的问题,但没有解决这个问题。

如果我将变量 say $domain 传递给 gethostbyname(),其中 $domain 是由 foreach 循环创建的字符串值,return 值始终是我输入的值——例如如果 $domain =="google.com" 则 return 值为 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 数组值时使用 trim 修复。

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

Returns the IPv4 address or a string containing the unmodified hostname on failure.

您所声称的是不正确的。这个:

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

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

输出:74.125.136.139两次

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