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).

David van der Tuijn
"Mijn naam is David van der Tuijn, als senior php developer bij Floro Webdevelopment B.V. werk ik samen met een projectleider, back-end developers, front-end developers en designers, op basis van een functioneel- (FO) en technisch ontwerp (TO), bouw ik webapplicaties die voldoen aan de nieuwste ontwikkelingen op internet gebied. Ik werk zelfstandig, weet hoe een architectuur opgezet moet worden en kan deze uitdragen in een multidisciplinair team. binnen een project adviseer ik over de juiste methoden en technieken. Ik ontwikkel en bewaak de kwaliteit van de development werkzaamheden in projecten en kan projecten binnen een afgegeven planning afronden."