Valideren met Reguliere Expressies

Reguliere Expressies is een manier om patronen te valideren.

Alleen letters :

function valid_alpha ($value)
{
  return preg_match("/^[a-z]+$/i", $value);
}

Alleen letters en nummers :

function valid_alpha_num ($value)
{
  return preg_match("/^[a-z0-9]+$/i", $value);
}

Een boolean 0, 1 of true, false :

function valid_boolean ($value)
{
  return preg_match("/^true$|^1|^false|^0$/i", $value);
}

Alleen nummmers :

function valid_digit ($value)
{
  return (bool) preg_match("/^[0-9]+$/", $value);
}

Een Nederlandse postcode (e.g. 1234 AA) :

function valid_dutch_postcode ($value)
{
  return preg_match('/^[1-9][0-9]{3} ?[a-zA-Z]{2}$/', $value);
}

Een Nederlands telefoonnummer (e.g. 123-1234567) :

function valid_dutch_phone ($value)
{
  $regex = '^[0-9]{2,4}[-]?[0-9]{6,8}$';
  $value = str_replace(array(' ', '-'), array('', ''), $value);
  return (strLen($value) == 10 && eregi($regex, $value));
}

Een e-mail adres (e.g. xxx@xxx.xx) :

function valid_email ($value)
{
  return preg_match("/^[a-z0-9_\.-]+@([a-z0-9]+([\-]+[a-z0-9]+)*\.)+[a-z]{2,7}$/i", $value);
}

Een e-mail adres (e.g. xxx@xxx.xx) + controle op MX records :

function valid_email_host ($value)
{
  $check = array();
  if (eregi("^[0-9a-z_]([-_.]?[0-9a-z_])*@[0-9a-z][-.0-9a-z]*\\.[a-z]{2,3}[.]?$", $value, $check))
  {
    $host = substr(strstr($check[0], '@'), 1).".";
    if (function_exists('getmxrr'))
    {
      $tmp = null;
      if (getmxrr($host, $tmp))
      {
        return true;
      }
      // this will catch dns that are not mx.
      if (checkdnsrr($host,'ANY'))
      {
        return true;
      }
    }
    else
    {
      return ($host != gethostbyname($host));
    }
  }
  return false;
}

Een bestandsnaam (punten zijn toegestaan, maar geen slashes of andere tekens) :

function valid_filename ($value)
{
  return preg_match("{^[^\\/\*\?\:\,]+$}", $value);
}

Alleen nummers, het minteken en een komma :

function valid_float ($value)
{
  return (bool) preg_match("/^-?([0-9]*\.?,?[0-9]+)$/", $value);
}

Alleen nummers en het minteken :

function valid_integer ($value)
{
  return (bool) preg_match("/^-?[0-9]+$/", $value);
}

Een IP-Adres e.g. xxx.xxx.xxx.xxx :

function valid_ip ($value)
{
  return preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}:?\d*$/', $value);
}

Alleen letters en cijfers, maar geen spaties (ASCII 33 - 126) :

function valid_password ($value)
{
  return preg_match("/^[\41-\176]+$/", $value);
}

Alle tekens, maar geen control tekens (ASCII 0 - 31) :

function valid_string ($value)
{
  return preg_match("/^[^\x-\x1F]+$/", $value);
}

Hetzelfde als valid_sting maar met newline tekens en tabs :

function valid_text ($value)
{
  return preg_match("/^([^\x-\x1F]|[\r\n\t])+$/", $value);
}

Een URL :

function valid_url ($value)
{
  $regex = '/^((http|ftp|https):\/{2})?(([0-9a-zA-Z_-]+\.)+[a-zA-Z]+)((:[0-9]+)?)((\/([0-9a-zA-Z=%\.\/_-]+)?(\?[0-9a-zA-Z%\/&=_-]+)?)?)$/';
  $result = preg_match( $regex, $value, $match );
  return $result;
}

Een URL + controle op http verbinding :

function valid_url_host ($href)
{
  if (strlen($href) <= 3)
  {
    return false;
  }
  if (!preg_match("/^[a-z]+:/i", $href))
  {
    $href = 'http://'.$href;
  }
  if (preg_match("/^http:\/\//", $href))
  {
   $fp = @fopen($href, 'r');
   if ($fp)
   {
     @fclose($fp);
     return true;
   }
  }
  return false;
}

Opmerking : De functie eregi is DEPRECATED. (wordt gebruikt in valid_dutch_phone en valid_email_host).