2016-04-08 7 views
0

PHP gethostbyname() возвращает имя вместо IP, когда имя передается как переменная, а не строковый литералPHP gethostbyname() возвращает имя вместо IP, когда имя передается как переменная, а не строковый литерал

Я видел похожие проблемы с некоторой ценной дискуссией, но ничего, что эта эта голова.

Если я передаю varible, скажите $ 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'); 

    } 

РЕШЕНИЕ: Это оказалось быть вызваны некоторыми некоторые корявые пробела в моем varible, которые были зафиксированы с помощью дифферента при создании my $ this-> domainNames.

+0

Просьба указать конкретный код, в котором возникает эта проблема. Я попробовал, и он возвращает мне IP-адрес, а не имя. – Laurens

+0

Поскольку мы не знаем, что находится внутри $ this-> domainNames, мы по-прежнему не можем вам помочь. Также дайте дамп $ this-> domainNames, выполнив 'var_dump ($ this-> domainNames);' – Laurens

+0

Laurens $ this-domainName в данный момент был разделен на массив, содержащий две строки как google.com, - когда я ввожу точные значения (вырезать и вставлять) в функцию, я получаю IP-адреса, когда я вхожу в vars из foreachloop, я получаю данные, которые я вставляю (если я не ввел недопустимое имя домена, тогда получаю сообщение об ошибке) –

ответ

1

Он будет делать это, когда gethostbyname() не работает. Из руководства по PHP:

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

То, что вы утверждаете, неверно. Это:

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

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

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

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