Een paar kleine, handige PHP-functies

14 12 2011
Door
 
Reageer op
dit artikel.

Als je een systeem bouwt in PHP en je werkt met gebruikers of formulieren, dan moet je wat berekeningen vaak herhalen. Daar schrijven we een functie voor! Hier een aantal handige functies, bijvoorbeeld om uit te vinden of het ingevulde veld wel een e-mailadres is, hoe oud iemand is aan de hand van de geboortedatum en meer!

Pas de functies aan naar je eigen wensen. Deze functies zijn voor de beginnende PHP-er, wellicht heb je betere ontdekt of kun je het op een andere manier oplossen.

Toon het aantal dagen tot een bepaalde datum

function countdown($maand, $dag, $jaar){
  $remain = ceil( ( mktime( 0,0,0,$maand,$dag,$jaar)
  - time() ) / 86400 );
  echo $remain;
}

De code countdown(12,31,2011); geeft nu 16.

Controleer of het een geldig e-mailadres is

function checkMail($email){
  if(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) {
    return false;
  } else {
    return true;
  }
}

Deze code werkt met een regular expression in combinatie met preg_match. De code checkMail('Hallo!') geeft nu false.

Bereken de leeftijd aan de hand van de geboortedatum

function geefLeeftijd($birthday){
  list($year,$month,$day) = explode("-",$birthday);
  $year_diff = date("Y") - $year;
  $month_diff = date("m") - $month;
  $day_diff = date("d") - $day;
  if ($day_diff < 0 || $month_diff < 0)
    $year_diff--;
  return $year_diff;
}

Met de code geefLeeftijd('1988-04-27') krijg je het getal 23 terug.

Toon het aantal minuten en uren sinds een datum

Een volledige datum staat in het formaat 0000-00-00 00:00:00. Je kunt het verschil tussen twee data uitrekenen met de functie date_diff. Geef de huidige datum in het genoemde formaat en het tijdsverschil mee in de onderstaande functie. Je krijgt bij het gebruik van deze functie een zinnetje als '3 uur en 5 minuten geleden'.

function tijdGeleden($datum, $datumverschil, $metofzondertijd = 1){
  if($datum != "" && $datum != " " && $datum != "0000-00-00 00:00:00"){
    $datumverschil = str_replace('-', '', $datumverschil);
    $datumverschil0 = explode(":", $datumverschil);
    $uren = $datumverschil0[0];
    $minuten = $datumverschil0[1];
    $seconden = $datumverschil0[2];

  if($uren == 0 && $minuten == 0){
    $datumgeleden = 'zojuist ';
  } else if($uren == 0 && $minuten > 0 && $minuten < 60){
    $datumgeleden = ceil($minuten);
    if(ceil($minuten) == 1){
      $datumgeleden .= ' minuut';
    } else {
      $datumgeleden .= ' minuten';
    }
    $datumgeleden .= ' geleden ';
  } else if($uren > 0 && $uren < 24){
    $datumgeleden = ceil($uren).' uur geleden ';
  } else if($uren >= 24 && $uren < 48){
    $datumgeleden = 'gisteren ';
  } else if($uren >= 48 && $uren < 72){
    $datumgeleden = 'eergisteren ';
  } else if($uren >= 72 && $uren < 96){
    $datumgeleden = '3 dagen geleden ';
  } else if($uren >= 96 && $uren < 120){
    $datumgeleden = '4 dagen geleden ';
  } else if($uren >= 120 && $uren < 144){
    $datumgeleden = '5 dagen geleden ';
  } else if($uren >= 144 && $uren < 168){
    $datumgeleden = '6 dagen geleden ';
  } else if($uren >= 168 && $uren < 192){
    $datumgeleden = 'een week geleden ';
  } else {
    $datumgeleden = $datum;
  }
  return $datumgeleden;
  
  } else {
    return 0;
  }
};

Tekst netjes afbreken

function afbreken($str, $length, $minword = 3){
  $str = strip_tags($str);
  $sub = '';
  $len = 0;
  foreach (explode(' ', $str) as $word){
    $part = (($sub != '') ? ' ' : '') . $word;
    $sub .= $part;
    $len += strlen($part);
    if (strlen($word) > $minword && strlen($sub) >= $length){
      break;
    }
  }
  return $sub . (($len < strlen($str)) ? '..' : '');
}

Om een stuk tekst netjes af te breken en twee puntjes te tonen, gebruik je: echo afbreken('Dit is een te lange tekst', 10);.

Tags:


Over Erwin :
Hoi! Ik ben Erwin Rietveld, 23, webdesigner uit Heemskerk. Ik ben afgestudeerd aan de opleiding Interactieve Media op de Hogeschool van Amsterdam. Ik schrijf over techniek, code, design, gadgets, social media en handige tips en trucs op het gebied van webdesign. Je vindt meer over mij op erwinrietveld.nl. Volg mij via @ewinnn!

 

Volg ons op Facebook.