=

Daschmi's Notizblog

RSS Feed

Funktion um manuelle Nummern hochzuzählen

Erstellt in PHP am 23. November 2018

Mit folgender Funktion können Nummern hochgezählt werden, die aus Zahlen und Buchstaben bestehen können. Bei Buchstaben wird der nächste Buchstabe im Alphabet genommen, bei Zahlen die letzte Zahl der Nummer erhöht. Sollte keine Zahl oder Buchstabe am Ende der Nummer stehen, so bekommt die Nummer das Suffix „-1“.

abstract class DS {

   public static function getNextNumber($prevNumber) {
               
      $prevNumber = trim($prevNumber);
      
      if (strlen($prevNumber) <= 0) return "1";            
      
      preg_match('/\d+$/', $prevNumber, $mNumberic);
      preg_match('/[A-Za-z]+$/', $prevNumber, $mCharacter);
      
      if (isset($mNumberic[0]) && intal($mNumberic[0]) > 0) {
            
            return preg_replace('/\d+$/', intval($mNumberic[0]) + 1, $prevNumber);
            
      } else if (isset($mCharacter[0]) && strlen($mCharacter[0]) > 0) {

            return preg_replace('/[A-Za-z]+$/', ++ $mCharacter[0], $prevNumber);
            
      } else {
            
            return $prevNumber.'-1';
            
      }
      
   }

}

Ausgabe:

DS::getNextNumber("") => "1"
DS::getNextNumber("1") => "2"
DS::getNextNumber("100") => "101"
DS::getNextNumber("ABC/2/CED-100") => "ABC/2/CED-101"
DS::getNextNumber("ABC/2/CEE") => "ABC/2/CEF"
DS::getNextNumber("B") => "C"
DS::getNextNumber("Z") => "AA"
DS::getNextNumber("12B") => "12C"
DS::getNextNumber("12-B") => "12-C"
DS::getNextNumber("12-B/") => "12-B/-1"
DS::getNextNumber("A") => "ZZ"

Die gleiche Funktion für VisualBasic findet man hier.

Abstand zwischen zwei geografischen Punkten mittels PHP ermitteln über zwei Längen- /Breitengrade

Erstellt in PHP am 31. Mai 2018

Mit folgender PHP Funktion kann der Abstand in km zwischen zwei Punkten die über Längengrad und Breitengrad gegeben sind ermittelt werden.

/**
  * Ermittelt den Abstand in km zwischen zwei Geo Positionen
  */
function getDistance($lat1, $lng1, $lat2, $lng2) {

  $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($lng1 - $lng2));
  $dist = rad2deg(acos($dist));

  $miles = $dist * 60 * 1.1515;

  return $miles * 1.609344;

}

Kleine Funktion zum formatieren von IBAN Nummern nach DIN 5008

Erstellt in PHP am 23. Januar 2018

Um IBAN Nummern mit Freizeichen nach DIN 5008 zu formatieren kann folgende PHP Funktion verwendet werden:

function formatIBAN($iban) {

  $iban = preg_replace('/\040/', '', $iban);
  $iban_formated = '';

  for ($i = 0; $i < ceil(strlen($iban) / 4); $i ++) $iban_formated .= substr($iban, $i * 4, 4).' ';

  return trim($iban_formated);

}

Anzahl an Wochentagen zwischen einem Zeitraum ermitteln

Erstellt in PHP, Sonstiges am 21. September 2017

Diese Funktion gibt einen Array mit der Anzahl der Sonntage (0), Montage(1) etc. zurück.

function countWeekDays($tStart, $tEnd)
{
    
    $arReturn = array(
        0 => 0,
        1 => 0,
        2 => 0,
        3 => 0,
        4 => 0,
        5 => 0,
        6 => 0
    );
    
    if ($tStart > $tEnd) 
    {
        
        $t = $tEnd;
        $tEnd = $tStart;
        $tStart = $t;
        
    }
    
    $t = $tStart;
    $i = 0;
    
    while (true)
    {
        
        $i ++;
        $arReturn[date('w', $t)] ++;
        
        $t = strtotime('+1 day', $t);
        
        if ($i > 1000 || $t > $tEnd) break;
        
    }
    
    return $arReturn;
    
} // public static function countWeekDays($tStart, $tEnd)

Mit PHPExcel den Spaltenbuchstabens anhand des Spaltenindex bestimmen

Erstellt in PHP am 25. April 2017

In Excel werden die Spalten als Buchstaben dargestellt. Um die Buchstaben anhand des Spaltenindexes zu bilden kann in PHPExcel folgende Funktion verwendet werden:

function getColNameFromColNumber($col_number)
{ 

  return PHPExcel_Cell::stringFromColumnIndex($col_number); 

}


Bitte genehmigen Sie die Verwendung von Cookies dieser Website! Mehr Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen