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