PHP gethostbyname() возвращает имя вместо IP, когда имя передается как переменная, а не как строковый литерал
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');
}
РЕШЕНИЕ: Это оказалось причиной некоторых неаккуратных пробелов в моей переменной, которые были исправлены с помощью trim при создании значений моего массива $ this-> domainNames.
1 ответ
Это будет сделано, когда gethostbyname()
выходит из строя. Из руководства по PHP:
Возвращает IPv4-адрес или строку, содержащую неизмененное имя хоста при ошибке.
То, что вы утверждаете, не соответствует действительности. Это:
<?php
$domainNames = array("google.com", "google.com");
foreach ($domainNames as $url){
echo gethostbyname($url);
}
Выходы: 74.125.136.139
дважды
Пожалуйста, предоставьте дамп $ domainNames, чтобы мы могли видеть, что на самом деле происходит.