2012-02-09 16 views
0

文字列 "宛先ホスト到達不能"の配列$ resultを検索しようとしていますが、機能しません。in_array関数を使用して変数に文字列を見つけることができません

私は何が間違っているのか分かりませんし、誰かが手を貸すことができるかどうか疑問に思っていましたか?

$ip = 192.168.1.30 

    $pingresult = exec("ping -n 1 $ip", $outcome, $status); 

    if ($status == 0) 
     {           
      if(in_array("Destination host unreachable", $outcome)) 
       { 
        echo "Unreachable"; 
       } 
      else 
       { 
        echo "Alive"; 
       } 
     } 

P.S.私はWindowsマシン上にあるので、終了ステータスがLinuxなどと異なっているので注意してください。

答えて

1

お試しください。

if(array_search($outcome, "Destination host unreachable") !== false){ 
echo 'not reachable'; 
} 
+0

ありがとうございます。私は '配列ではなく文字列を期待しています'というエラーはありますがエラーです。それにもかかわらず、それはそのように働いているようです。 – Bernard

+0

ohh ok。この関数は配列のためになぜnotworkingなのかを文字列に変換するものです。 これを試してみてください。 if(array_search($ outcome、 "Destination host unreachable")!== false){ echo 'not reachable'; } – rajesh

+0

@rajesh - 回答を更新する必要があります –

1

in_arrayは完全一致でのみtrueを返します。したがって、行に追加の文字(空白を含む)がある場合、それは一致しません。 preg_matchを使って配列をループしたいかもしれません。

関連する問題