当名称作为变量而不是字符串文字

时间:2016-04-08 19:11:25

标签: php gethostbyname

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

我在一些有价值的讨论中看到了类似的问题,但这并没有说明这一点。

如果我将一个变量说$ domain传递给gethostbyname(),其中$ domain是foreach循环创建的字符串值,返回值总是我放入它的内容 - 例如,如果$ domain ==& #34; google.com"返回值是google.com。使用字符串文字调用相同的函数gethostbyname()我得到IP地址。的gethostbyname(' google.com&#39)

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

谢谢

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

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

            $ips[]=gethostbyname($url); 

    }

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

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

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

    }

解: 事实证明,在创建我的$ this-> domainNames数组值时,使用trim修复了我的varible中的一些草率空间。

1 个答案:

答案 0 :(得分:1)

gethostbyname()失败时会执行此操作。从PHP手册:

  

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

你声称的不是真的。这样:

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

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

输出:74.125.136.139两次

请提供$ domainNames的转储,以便我们可以看到实际发生的事情。