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, чтобы мы могли видеть, что на самом деле происходит.

Другие вопросы по тегам