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;
    }
}
ale to asi nebude dobré, ani správné.


Moderátor Joker: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Joker
Profil
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
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;
}
hazardrok
Profil
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0