当名称作为变量而不是字符串文字传入时,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中的一些草率空间。
答案 0 :(得分:1)
gethostbyname()
失败时会执行此操作。从PHP手册:
返回IPv4地址或包含失败时未修改主机名的字符串。
你声称的不是真的。这样:
<?php
$domainNames = array("google.com", "google.com");
foreach ($domainNames as $url){
echo gethostbyname($url);
}
输出:74.125.136.139
两次
请提供$ domainNames的转储,以便我们可以看到实际发生的事情。