2015-09-13 2 views
0

У меня есть сервер api, который разрешает пользователей и показывает их в качестве примера. Я разрешаю пользователю «r-a-z-e» после того, как разрешение api возвращается как ответ: 91.252.251.44 | 91.253.31.98, и здесь возникает проблема ... мне нужно проверить этот ips, если они действительны или нет, и в качестве примера, если api возвращает 91.252.251.44 | gg.gg.gg.gg, чтобы отобразить только действительный ip, поэтому в этом примере 91.252.251.44 и если ips оба действительны, чтобы показать только первый, поэтому, если ответ api равен 91.252.251.44 | 91.253.31.98 показать только 91.252.251.44 код для вызова API-интерфейс является:Множественная проверка ips от api [PHP]

<?php  
if(!empty($_GET["username"])): 
$username = trim(htmlspecialchars(strtolower($_GET["username"]))); 

    $curl = curl_init();  
      curl_setopt($curl, CURLOPT_URL, "http://www.heretheapilink.com/skype.php?username=".$username); 
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); 
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 
      $ip = curl_exec($curl); 
      curl_close($curl); 
      echo htmlspecialchars(trim($ip)); 
?> 

И извините за мой плохой английский ...

ответ

1

Вы можете использовать простой preg_match, чтобы найти IP-адрес в ответ, следующим образом:

if (preg_match('/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/', $ip, $matches)) 
{ 
    $realIP = $matches[0]; 
    // Do whatever you want with the $realIP here 
} 
+0

999 соответствует '\ D {1,3}', но не будет такого числа в IP –

+0

Фиксированный для повышения точности – uri2x

Смежные вопросы