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');

}

РЕШЕНИЕ:
Это оказалось причиной некоторых неаккуратных пробелов в моей переменной, которые были исправлены с помощью обрезки при создании значений моего массива $ this-> domainNames.

0

Решение

Это будет сделано, когда gethostbyname() выходит из строя. Из руководства по PHP:

Возвращает адрес IPv4 или строку, содержащую неизмененное имя хоста при ошибке.

То, что вы утверждаете, не соответствует действительности. Это:

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

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

Выходы: 74.125.136.139 дважды

Пожалуйста, предоставьте дамп $ domainNames, чтобы мы могли видеть, что на самом деле происходит.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]