Autor | Zpráva | ||
---|---|---|---|
artorie Profil |
Zdravím.
V regulárních výrazech jsem začátečník, a potřebovat bych napsat regulární výraz, který zkontroluje, jestli zadaná IP adresa je skutečně ip adresa. Nevím si rady, zatím mám jen function is_ip($ip){ if (preg_match("/^[0123456789][0123456789][0123456789][0123456789].[0123456789][0123456789][0123456789][0123456789].[0123456789][0123456789][0123456789][0123456789].[0123456789][0123456789][0123456789][0123456789].[0123456789][0123456789][0123456789][0123456789]$/", $ip)){ return TRUE; } else{ return FALSE; } } Moderátor Joker: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Joker Profil |
#2 · Zasláno: 16. 8. 2012, 12:26:04
artorie:
„potřebovat bych napsat regulární výraz, který zkontroluje, jestli zadaná IP adresa je skutečně ip adresa“ A řešení, která najde Google po zadání titulku vlákna, nevyhovují z jakého důvodu? |
||
l564 Profil |
Můžete využít této funkce:
function ipvalidate($ip_addr) { if(preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/",$ip_addr)) { $parts=explode(".",$ip_addr); foreach($parts as $ip_parts) { if(intval($ip_parts)>255 || intval($ip_parts)<0) return false; } return true; } else return false; } To potom jen vložíte do podmínky if(ipvalidate($_POST['ip']) == true){ // Zde je kod pro validní adresu } else{ // Nevalidni kod die("Vaše ip je nevalidní"); } Nebo pomocí filtru můžete ověřit ip if (filter_var($_POST['ip'], FILTER_VALIDATE_IP)) { echo "Tato ip je validni"; } A nebo zde máte funkci s (moment, hledá se) function is_valid_ipv4($ip) { return preg_match('/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'. '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'. '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.'. '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/', $ip) !== 0; } Jen upozorňuji, že všechny tyto kód jsou pro IPv4 |
||
Ugo Profil |
PHP >= 5.2
filter_var("192.168.1.100", FILTER_VALIDATE_IP) http://cz.php.net/manual/en/function.filter-var.php |
||
king26 Profil |
#5 · Zasláno: 16. 8. 2012, 13:32:22
function validateIPv4($ip) { return $ip == long2ip(ip2long($ip)); } function validateIPv6($ip) { // fast exit for localhost if(strlen($ip) < 3) { return $ip == "::"; } // Check if part is in IPv4 format if(strpos($ip, ".")) { $lastcolon = strrpos($ip, ":"); if(!($lastcolon && validateIPv4(substr($ip, $lastcolon + 1)))) { return false; } // replace IPv4 part with dummy $ip = substr($ip, 0, $lastcolon).":0:0"; } // check uncompressed if(strpos($ip, "::") === false) { return preg_match("/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}$/i", $ip); } // check colon-count for compressed format if(substr_count($ip, ":") < 8) { return preg_match("/^(?::|(?:[a-f0-9]{1,4}:)+):(?:(?:[a-f0-9]{1,4}:)*[a-f0-9]{1,4})?$/i", $ip); } return false; } |
||
Časová prodleva: 4 dny
|
|||
hazardrok Profil |
#6 · Zasláno: 20. 8. 2012, 11:54:43
Ahoj, já jsem na nětu našel např. toto:
^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$ funguje to docela dobře, ale netestuje to úplně všechno. |
||
Časová prodleva: 12 let
|
0