2016-04-08 6 views
0

PHP gethostbyname()は文字列リテラルではなく変数として渡されたときにIPではなく名前を返すPHP gethostbyname()は、文字列リテラルではなく変数として渡されたときにIPではなく名前を返す

私はいくつかの貴重な議論で同様の問題を見てきましたが、これについては頭がおかしくありません。

$ domainがforeachループによって作成された文字列値である場合、$ domainをgethostbyname()に渡すと、戻り値は常に正確に私が置いたものです - たとえば$ domain ==の場合「google.com」の戻り値はgoogle.comです。同じ関数gethostbyname()を文字列リテラルで呼び出すと、IPアドレスが取得されます。 gethostbyname( 'google.com')

これは既知のバグですか?回避策はありますか?私はどんな助けにも感謝します。

は、このコードが失敗したあなたに

をありがとう - 結果の$ URLの値を生成する:

foreach ($this->domainNames as $url){ 

      $ips[]=gethostbyname($url); 

    } 

コードの2番目のセットは$に値ごとに二回(一回正しいIPアドレスを提供しますthis->なドメイン名:

foreach ($this->domainNames as $url){ 

      $ips[]=gethostbyname('google.com'); 

    } 

解決 これは、使用して固定した私のvaribleでいくつかのいくつかのずさんなスペースを生じることが判明作成するときにトリムmy $ this-> domainNames配列の値です。

+0

この問題が発生する特定のコードを記入してください。私はそれを試して、それは私に名前ではなくIPアドレスを返します。 – Laurens

+0

$ this-> domainNamesの中に何が入っているかわからないので、私たちはまだあなたを助けません。 – Laurens

+0

Laurens $ this-domainNameは、現在、「google.com」と「google.com」の2つの文字列を含む配列には削除されています。 - IPアドレスを取得する関数に正確な値(カットアンドペースト)を入力すると、foreachloopから変数を入力すると、データを取得します(無効なドメイン名を入力しない限りエラーが発生します) ) –

答えて

1

gethostbyname()が失敗するとこれが実行されます。 PHPマニュアルから:

失敗した場合は、変更されていないホスト名を含むIPv4アドレスまたは文字列を返します。

あなたの主張は真実ではありません。この:

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

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

出力:74.125.136.139二回

$なドメイン名のダンプを提供し、私たちは本当に何が起こっているのかを見ることができますしてください。

関連する問題