Category Archives: PHP

Alles over PHP, nieuws, tips en trucs

PHP splitAddress – Functie van de maand – augustus 2019

Het komt vaak voor dat er in een database een straat + huisnummer in één veld opgeslagen wordt. Met deze functie (splitAddress) splits je dit gemakkelijk in straat / huisnummer + extensie.

/**
* Splitsen van complete straat / huisnummer combinatie naar Straat, Huisnummer, Toevoeging
* 
* @param mixed $aAddress
*/
function splitAddress($aAddress) {
	$Street=$aAddress;
	$HomeNumber="";
	$HomeNumberExt="";

    //laatste 11 karakters van het complete adres
	$HomeNumber=substr($aAddress,-11);
	$max=strlen($HomeNumber);

    //vind positie van het eerst voorkomende nummer in de laatste 11 en splits hierop
	for($tel=0;$tel<$max;$tel++) {
		if(is_numeric($HomeNumber{$tel})) {
			$HomeNumber=substr($aAddress,-$max+$tel);
			$Street=substr($aAddress,0,strlen($aAddress)-$max+$tel);
			break;
		}
	}
    //controle of er wel een nummer gevonden is
	if($tel==$max) {
		//geen nummer gevonden
		$HomeNumber="";
		$HomeNumberExt="";
	}
    //haal de extensie uit het huisnummer indien aanwezig
	for($tel=0;$tel<strlen($HomeNumber);$tel++) {
		if(!is_numeric($HomeNumber{$tel})) {
			$HomeNumberExt=substr($HomeNumber,$tel);
			$HomeNumber=substr($HomeNumber,0,$tel);
			break;
		}
	}
    //geef resultaat terug als een array
	return array(trim($Street),trim($HomeNumber),trim($HomeNumberExt));
}

Van de laatste 11 karakters wordt het eerste voorkomende cijfer bepaald, hierop wordt de straatnaam / huisnummer gesplitst.

Doe er je voordeel mee…!

PHP array2csv – Functie van de maand – juni 2019

Converteren van een array naar een CSV voor het wegschrijven naar een bestand of direct naar de browser, daar kan je gemakkelijk de standaard functionaliteiten van PHP voor gebruiken. Alleen deze standaard functies schrijven weg naar een bestand. Deze functie zet dit om naar de standaard PHP-output en zorgt dat dit in een string terug uit de functie komt.

/**
* Change array to standard CSV-format readable in excel or other spreadsheet applications
* 
* @param array $array
* @param string $delimiter
*/
function array2csv(array &$array, $delimiter=";") {
    //check if array is empty
   if (count($array) == 0) return null;

   //start the standard output buffer
   ob_start();

   //open filepointer to write to php output buffer
   $df = fopen("php://output", "w");

   //use standard csv function from PHP to form the header
   fputcsv($df, array_keys(reset($array)), $delimiter);
   foreach ($array as $row) {
       //now each data row
       fputcsv($df, $row, $delimiter);
   }

   //close the filepointer
   fclose($df);

   //clean and return the output buffer
   return ob_get_clean();
}

PHP del – Functie van de maand – mei 2019

Een functie bestandssysteem gerelateerd, het verwijderen van een bestand of complete directory. Dit is een recursieve functie, een soort “deltree” of “rm -r” commando.

/**
* Remove file or complete directory
* 
* @param mixed $file
*/
function del($file) {
	$delim="/";

    //check if file exists
	if (!@is_link($file) && !file_exists($file)) return false;

    //check if file is directory
	if (!@is_link($file) && @is_dir($file)) {
        //try to open the directory
		if ($dir = @opendir($file)) {
			$error = false;
            //loop through all files and directory's in this directory and recursively delete
			while (($f = readdir($dir)) !== false) {
				if ($f != '.' && $f != '..' && !del($file . $delim . $f)) {
					$error = true;
				}
			}
			closedir($dir);

            //if no delete error occured from previous files / directories, remove the directory
			if (!$error) return @rmdir($file);

            //return the opposite of error, if error occured (=true) then return false
			return !$error;
		} else {
            //unable to open directory
			return false;
		}
	} else {
        //it's a file, just remove the file using unlink
		return @unlink($file);
	}
}

PHP strenc / strdec – Functie van de maand – april 2019

Dit keer een functie om een string te encrypten en decrypten. Vooral handig wanneer je geen beschikking hebt over https en toch veilig gegevens wilt uitwisselen tussen 2 systemen.

De 2 functies, strenc en strdec, spreken voor zich!

function strenc($aString,$key='thesecretkey') { 
    $iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

    $enc = mcrypt_encrypt(MCRYPT_XTEA, $key, $aString, MCRYPT_MODE_ECB, $iv);

    return $enc;
} 

function strdec($aString,$key='thesecretkey') { 
    $iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

    $dec = mcrypt_decrypt(MCRYPT_XTEA, $key, $aString, MCRYPT_MODE_ECB, $iv);

    return $dec;
}

PHP gethighlightedsencence – Functie van de maand – maart 2019

De volgende functie maakt het gemakkelijk om resultaten uit een zoekopdracht weer te geven. Het geeft de eerste 2 regels waarin een of meerdere zoekwoorden voorkomen terug en highlight deze zoekworden.

// find the 2 first sentences with words specified and highlight these words
function gethighlightedsentence($aContent,$aWords) {
	$Pattern="/([\.\?!:])[ ]([A-Z])/";

	$arrContent = preg_replace($Pattern,"$1 ~$2",strip_tags($aContent));

	$SentenceArray=split("~",$arrContent);
	$WordArray=split(" ",$aWords);
	if(!is_array($WordArray)) {
		$WordArray[0]=$aWords;
	}
	$Counter=0;
	$strOutput="";
	foreach($SentenceArray as $i => $Sentence) {
		$OutputSentence=$Sentence;
		foreach($WordArray as $j => $Word) {
			$Pattern=$Word;
			if(eregi($Pattern,$Sentence)!=0) {
				$OutputSentence=eregi_replace($Pattern,"<b><i>\\0</i></b>",$OutputSentence);
				$strOutput.="... " . $OutputSentence . " ...<br>";
				$Counter++;
			}
			if($Counter==2) {
				return($strOutput);
			}
		}
	}
	return($strOutput);
}

PHP replaceLinks – Functie van de maand – februari 2019

Deze PHP functie vervangt links in een tekst automatisch door <a href-tag. Tevens worden e-mailadressen vervangen door <a href=”mailto:-tags.

function replaceLinks($string1) {
   $pattern1 = "/(?<![\/\d\w])(http:\/\/)?([\w\d\-]+[\w\d\-]+)((\.([\w\d\-])+){2,})([\/\?\w\d\.\-_&=+%]*)?/i";
   $replace1 = "<a href=\"http://$2$3$6\" target=\"_blank\">$2$3$6</a>";
   $string2 = preg_replace($pattern1,$replace1,$string1);
   $pattern2 = "/[\d\w\.\-_]+@[\d\w\-_\.]+?\.[\w]{2,3}(\.[\w]{2,3})?/i";
   $replace2 = "<a href=\"mailto:$0\">$0</a>";
   $string3 = preg_replace($pattern2,$replace2,$string2);    
   return $string3;
}