Hauptmenü

Werkzeuge

Kategorien

Archiv

Einhell

Längste Übereinstimmung aus einer MySQL Tabelle auslesen

Erstellt in PHP am 26. Februar 2016 vom Daschmi

Ich hatte das Problem, dass ich eine Tabelle mit Vorwahlen hatte und für eine Rufnummer die Kosten aus dieser Tabelle ermitteln musste. Hierzu wollte ich den Datensatz ermitteln der von der Länge her am weitesten mit der Nummer übereinstimmt. Ich musste etwas nachdenken und habe es schließlich mit folgendem Query gelöst:

SELECT
	*
FROM
	`tbl_connectionprice`
WHERE
	LEFT(':destinationnumber', LENGTH(`areacode`)) = `areacode`
ORDER BY
	LENGTH(`areacode`) DESC
LIMIT 1

Die Variable :destinationnumber ist dabei die komplette Rufnummer die angerufen wurde inklusive Vorwahl und in der Spalte areacode sind die Vorwahlen definiert.

Excel Funktion AUFRUNDEN mit PHP nachgebildet

Erstellt in PHP am 12. Januar 2016 vom Daschmi

Die Excel Funktion „AUFRUNDEN“ kann mit folgender Funktion in PHP nachgebildet werden:

public static function AUFRUNDEN($value, $digit)
{

	$pow = pow(10, $digit);

	return (ceil($pow * $value) + ceil($pow * $value - ceil($pow * $value))) / $pow;

} // public static function AUFRUNDEN($value, $digit)

PhpGiroCode

Erstellt in PHP am 1. März 2015 vom Daschmi

GiroCode für QR – Code Überweisung generieren

Mit Hilfe dieser Bibliothek ist es möglich QR Codes zu generieren, die das überweisen z.B. mit der Sparkassen App erleichtert. Die Funktion generiert dabei aus IBAN/BIC oder Kontonummer/BLZ einen QR-Code der für Überweisungen innerhalb Deutschlands genutzt werden kann.

Funktionen:

  • Generierung eines QR-Codes (GiroCode) für Überweisungen innerhalb Deutschlands
  • Ermittlung von IBAN/BIC aus Kontonummer und BLZ (BLZ Stand Januar 2015)
  • Validierung von IBAN mittels Prüfziffer
  • Rückgabe von Bankdaten aus BLZ oder BIC
  • Rückgabe an Browser oder Speicherung in Datei

Beispiel:


IBAN
BIC
Empfänger
Betrag
Betreff
QR - GiroCode



PhpGiroCode PHP Klassenbibliothek

Stückpreis: 10,00 EUR

Längen und Breitengrad als FLOAT Werte aus EXIF Daten

Erstellt in PHP am 2. Januar 2015 vom Daschmi

Um mittels PHP die Längen- und Breitengrade aus einer Datei mit EXIF Metadaten zu extrahieren, können folgende Funktionen verwendet werden:

    function ds_gps2Num($coord)
{

$arParts = explode(‚/‘, $coord);

if (sizeof($arParts) <= 0) return 0;
else if (sizeof($arParts) == 1) return $arParts[0];
else return (floatval($arParts[0]) / floatval($arParts[1]));

}

function ds_getGps($exifCoord, $h)
{

$deg = ((sizeof($exifCoord) > 0)?ds_gps2Num($exifCoord[0]):0);
$min = ((sizeof($exifCoord) > 1)?ds_gps2Num($exifCoord[1]):0);
$sec = ((sizeof($exifCoord) > 2)?ds_gps2Num($exifCoord[2]):0);

return (($h == ‚W‘ || $h == ‚S‘)?-1:1) * ($deg + $min / 60 + $seconds / 3600);

}

Der Aufruf erfolgt dann beispielsweise so:

$exif = exif_read_data($filepath, ‚ANY_TAG‘);
$image_longitude = ds_getGps($exif["GPSLongitude"], $exif[‚GPSLongitudeRef‘]);
$image_latitude = ds_getGps($exif["GPSLatitude"], $exif[‚GPSLatitudeRef‘]);

IBAN Validieren

Erstellt in PHP am 11. März 2014 vom Daschmi

Mit folgendem PHP Code Schnipsel kann man einfache die IBAN Validierung durchführen:

function checkIBAN($strIBAN)
{

	$swapedIBAN = strtoupper(substr($strIBAN, 4).substr($strIBAN, 0, 4));
	$code = "";	

	for ($i = 0; $i < strlen($swapedIBAN); $i ++)
	{

		$char = $swapedIBAN[$i]; 

		if (is_numeric($char))
		{

			$code .= $char;

		}
		else
		{

			$code .= strval(ord($char) – 55);

		}

	}

	$reminder = "";
	while (true)
	{

		$substr = substr($code, 0, 4);
		$code = substr($code, 4);
		$reminder = intval($reminder.$substr) % 97;

		if (strlen($code) <= 0) break;

	}

	if ($reminder != "1") return false;
	else return true;

} // function checkIBAN($strIBAN)

Problem nach Update auf PHP4.5 mit htmlspecialchars und htmlentities

Erstellt in PHP am 18. Februar 2014 vom Daschmi

Wenn man ein „ISO Projekt“ nach PHP 5.4 aktualisiert und dort die ISO Daten mit htmlspecialchars ausgibt, wird nur ein leerer String zurückgegeben. Abhilfe schafft die Verwendung einer hspc Funktion anstelle von htmlspecialchars und htmlentities:

function hspc($value)
{ 

  return htmlspecialchars($value, ENT_COMPAT | ENT_HTML401, ‚ISO-8859-1‘);

}

Römische Zahl aus einer arabischen Zahl ermitteln

Erstellt in PHP am 14. Juli 2013 vom Daschmi

Wer eine römische Zahl ausgeben möchte, kann diese mit folgender Funktion ermitteln:

/**
 * Gibt die römische Zahl einer arabischen Zahl zurück
 */
function getRoemischeZahl($arabische_zahl)
{

  	$ar_number = array(1000, 900, 500, 400,100, 90,  50, 40,  10,   9,  5,   4,  1);
   	$ar_char = array(‚M‘, ‚CM‘, ‚D‘, ‚CD‘, ‚C‘, ‚XC‘, ‚L‘, ‚XL‘, ‚X‘, ‚IX‘, ‚V‘, ‚IV‘, ‚I‘);
   	$roemische_zahl = “;

   	for ($count = 0; $count &lt; count($ar_number); $count++)
   	{

	      	while ($arabische_zahl &gt;= $ar_number[$count]) {

	         	$roemische_zahl .= $ar_char[$count];
	         	$arabische_zahl -= $ar_number[$count];

	      	}

	}

	return $roemische_zahl;

} // function getRoemischeZahl($arabische_zahl)

Die Anwendung erfolgt dann einfach mittels:

echo getRoemischeZahl(100); 

Mehrere Autoload Funktionen in einem Projekt

Erstellt in PHP am 17. Februar 2013 vom Daschmi

Wenn man zum Beispiel ein WordPress Plugin programmiert und möchte eine Funktion zum automatischen Laden von Klassen verwenden so funktioniert das nur solange bis ein anderes Plugin ebenfalls eine __autoload Funktion implementiert.

Umgehen kann man das, in dem man seine Autoloadfunktion einen eindeutigen Namen gibt, oder den Namespace des Plugins verwendet.

  function wpsg_autoload() // statt __autoload()
  {
    ..
  }

Diese Funktion muss nun noch als Autload Funktion registriert werden, dies geschieht mittels:

spl_autoload_register(‚wpsg_autoload‘);

Für das ganze muss die SPS Unterstützung im PHP aktiv sein. Ab PHP 5.3 ist sie standardmäßig aktiv.

Erstes und letztes Element eines Arrays ohne die Elemente zu entfernen

Erstellt in PHP am 18. Januar 2013 vom Daschmi

Möchte man das erste Element eines Arrays ermitteln, so kann man die Funktion array_shift verwenden. Für das letzte Element gibt es die Funktion array_pop.

Beide Funktionen liefern dasElement und entfernen es aus dem Uhrsprungsarray. Man kann den Array vorher kopieren oder man verwendet folgenden Aufruf:

$first = array_values($array)[0]; // Statt array_shift
$last = array_values($array)[sizeof(array) – 1]; // Statt array_pop

Man könnte auch einfach $array[0] bzw. $array[sizeof($array) – 1] verwenden, dies würde aber nicht bei Assoziativen Arrays funktionieren.