<?php
#############################################
# Nyttige PHP Funktioner                    #
# http://martin-nielsen.com                    #
#-------------------------------------------#
# Dette er en samling af nyttige PHP        #
# funktioner, som jeg enten selv har skrevet#
# eller modificeret andre steder fra gennem    #
# tiden.                                     #
#############################################


#######################################################################################
## Valider e-mail på linux platform                                                     ##
## Funktions brug:                                                                   ##
##    check_mail("enmail@email.dk");                                                     ##
#######################################################################################
function check_mail($email) {  
    if (
eregi("^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\\.[a-z]{2,6}$"$email)) { 
          if (
checkdnsrr(substr(strstr($check[0], '@'), 1), "ANY")) { 
              return 
true
        } 
      } 
    return 
false;  
}

#######################################################################################
## Valider e-mail på windows platform                                                 ##
## Funktions brug:                                                                   ##
##    check_mail("enmail@email.dk");                                                     ##
#######################################################################################
function check_mail($email) {  
    if (
eregi("^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\\.[a-z]{2,6}$"$email)) { 
          return 
true
      } 
    return 
false;  
}


#######################################################################################
## Erstat <br> og <br /> med new lines                                                 ##
## Funktions brug:                                                                   ##
##    br2nl('tekst med <br>indbygget');                                                 ##
#######################################################################################
function br2nl($str) {
   return 
preg_replace'!<br.*>!iU'"\n"$str );
}

###############################################################################################
## Afsendelse af e-mail med de korrekte mime headers - nødvendigt på visse servere             ##
## Funktions brug:                                                                            ##
##    url2link('Tekst link http://martin-nielsen.com - linket vil blive klikbart');              ##
##  mailto('Streng med fra navn', 'Streng med fra e-mail', 'Streng med modtager navn', 'Streng med modtageremail', 'Streng emne', 'streng besked',Boolean true/false HTML eller ej);
## fx HTML mail:
## mailto('Martin','blah@blah.dk','Kurt','Kurt@blah.dk','Hejsa','<p>Dette er en mail med html <br>lalala</p><p>Det virker</p>',true);
###############################################################################################
function mailto($fromname$fromaddress$toname$toaddress$subject$message,$html) { 
    
$headers  "MIME-Version: 1.0\n";
    if (
$html) {
        
$headers .= "Content-type: text/html; charset=iso-8859-1\n"
    } else {
       
$headers .= "Content-type: text/plain; charset=iso-8859-1\n"
   }
   
$headers .= "X-Priority: 3\n"
   
$headers .= "X-MSMail-Priority: Normal\n";
   
$headers .= "X-Mailer: php\n";
   
$headers .= "From: \"".$fromname."\" <".$fromaddress.">\n";
   return 
mail($toaddress$subject$message$headers);
}  

#######################################################################################
## Omdan text links til klikbare links                                                 ##
## Funktions brug:                                                                   ##
##    url2link('Tekst link http://martin-nielsen.com - linket vil blive klikbart');     ##
#######################################################################################
function url2link($str) {
  return 
eregi_replace("\">http:\/\/","\">",eregi_replace("((f|ht)tps?://)([a-z0-9@:%_.~#\-\?&-]+)((\=|[a-z0-9]|\?|&|\/|\.|-|:|||)+){0,}"
                       
"<a href=\"\\0\" target=\"_blank\">\\0</a>"$str));
}

#######################################################################################
## Omdan text smielys til billede smileys                                             ##
## Smileys kan hentes her: http://martin-nielsen.com/downloads/smielys.zip             ##
## Funktions brug:                                                                   ##
##    smileys("test :) :D :0 :P =cool =ur =roll ;) :S => =lol =boggle =tired");         ##
#######################################################################################
function smileys($str) {
    
$link="/image/smileys/"//sæt link til smileys
    
$erstat=array("#:\)#","#:\(#","#:p#is",    "#:d#is","#:0#is","#:S#is","#;\)#is","#=blush#is","#=boggle#is","#=cool#is","#=roll#is","#=stress#is","#=tired#is","#=ur#is","#=>#is","#=lol#is");
    
$for="<img src=\"";
    
$bag="\" alt=\"\\0\"/>";
    
$erstatninger=array($for.$link."smile.gif".$bag,$for.$link."sad.gif".$bag,$for.$link."tongue.gif".$bag,$for.$link."biggrin.gif".$bag,$for.$link."eek.gif".$bag,$for.$link."confused.gif".$bag,$for.$link."wink.gif".$bag,$for.$link."blush.gif".$bag,$for.$link."boggle.gif".$bag,$for.$link."cool.gif".$bag,$for.$link."rolleyes.gif".$bag,$for.$link."stress.gif".$bag,$for.$link."tired.gif".$bag,$for.$link."urgh.gif".$bag,$for.$link."inlove.gif".$bag,$for.$link."icon_lol.gif".$bag);
    return 
preg_replace($erstat,$erstatninger,$str);
}

#######################################################################################
## formater dato fra mysql timestamp                                                 ##
## Funktions brug:                                                                   ##
##    mysql_datetime("sqltimestamp","datoformat")                                          ##
## http://dk.php.net/manual/da/function.date.php for dato formater                     ##
#######################################################################################
function mysql_datetime($datetime$format) {
   
$pattern "/^(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2}):(\d{2})$/i";
   if(
preg_match($pattern$datetime$dt) && checkdate($dt[2], $dt[3], $dt[1])) {
       return 
date($formatmktime($dt[4], $dt[5], $dt[6], $dt[2], $dt[3], $dt[1]));   
   }
   return 
$datetime;
}

#######################################################################################
## Valider IP                                                                         ##
## Funktions brug:                                                                   ##
##    checkIP("ip_adresse")                                                              ##
#######################################################################################
function checkIp($ip) {
    if ((
$longip ip2long($ip)) !== false) {
          if (
$ip == long2ip($longip)) {    return true; }
          else { return 
false;     }
    }
    else {  return 
false; } 
}

#######################################################################################
## Auto generering af x antal cifre kode                                             ##
## Funktions brug:                                                                   ##
##    kode(antal_tegn)                                                                    ##
#######################################################################################
function kode($antal=5) { 
    
$tilladte "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ123456789";  //tilladte tegn
    
for ($i=1;$i<=$antal;$i++) { 
      
$kode .= $tilladte[mt_rand(0,(strlen($tilladte)-1))];
    }
    return 
$kode;
}

#######################################################################################
## Udregn alder                                                                         ##
## Funktions brug:                                                                   ##
##    fosdelsdag("31-05-1981")                                                            ##
#######################################################################################
function fosdelsdag ($fosdag) {
    list(
$dag,$maaned,$aar) = explode("-",$fosdag);
    
$aar_forskel  date("Y")-$aar;
    
$maaned_forskel date("m") - $maaned;
    
$dag_forskel   date("d") - $dag;
    if (
$maaned_forskel 0) {
        
$aar_forskel--;
    }
    else if ((
$maaned_forskel==0) && ($dag_forskel 0)) {
        
$aar_forskel--;
    }
    return 
$aar_forskel;


#######################################################################################
## Tilføj variable til querystring i url                                             ##
## Funktions brug:                                                                   ##
##    tilfQuery("http://martin-nielsen.com?test=t","test2","t2")                         ##
## --> output http://martin-nielsen.com?test=t&test2=t2                                 ##
#######################################################################################
function tilfQuery($url$var$val) {
    
$url preg_replace('/(.*)(\?|&)'.$var.'=[^&]+?(&)(.*)/i','$1$2$4',$url.'&');
    
$url substr($url,0,-1);
    if (
strpos($url,'?') === false) {
         return 
$url.'?'.$var.'='.$val;
    } else {
         return (
$url.'&'.$var.'='.$val);
     }
}

?>