Kleiner Kurztrip nach Straßbourg

Heute war mir etwas langweilig. Also ein kurzer Blick auf die Karte und Straßbourg als Ziel erwählt. War echt cool. Keine 2 Stunden von Ludwigsburg und schon steht man mit dem Auto direkt vor dem Münster zum Nulltarif am Sonntag.

Die Altstadt ist total niedlich. Viele kleine Fachwerkhäuser. Sehr schöne Boutiquen und viele Brasserien. Außer einigen Restaurants (unter 15 EUR gibt es kaum etwas zu essen) und den typischen Touri-Läden ist alles zu. Aber der Münster ist so gut wie leer und in der Fußgängerzone, in Richtung Petit France, kommt kaum Gegenverkehr.

Bilder hab ich auch gemacht.

  • Share/Bookmark
Posted in Privates | Tagged , , | Leave a comment

Wie suche ich in einem Array nach einem Textteil mit PHP?

Diese Herausforderung hatte ich jüngst zu meistern. Ursprung war eine recht unsinnige Datenbankstruktur bei einem Kunden. Dort gibt es keine Normalisierung im Datenbankuniversum :-(

Aber nun genug gejammert. Auch damit muss man als Programmierer klar kommen. Die Problemstellung ist, dass eine Hierarchie durch eine Zeichenfolge in einem Textfeld angegeben wird. Dabei können mehrere Hierarchien auftreten, die ebenfalls durch ein Zeichen getrennt werden. Das sieht dann so aus:

2|15;2|8

Das Trennzeichen verschiedener Hierarchiedefinitionen ist das “;” (Semikolon). Die Hierarchieebenen werden mit dem “|” (Pipe) getrennt. Obige Darstellung signalisiert also ein Element, welches sich einmal in Hierarchie “2″ -> “15″ und einmal in Hierarchie “2″ -> “8″ befindet. Die Hierarchieebene “2″ ist also eine Oberebene und besitzt mindestens zwei Unterebenen.

Nun wird diese Hierchie für eine Verlinkung genutzt. Da ist es natürlich sehr passend, wenn man den Link abhängig von den Hierarchieebenen zusammenbaut. Befinde ich mich gerade in der Ebene “15″, dann will ich auch den Link via “2″ -> “15″ erhalten und in Ebene “8″ eben umgekehrt.

Nach kurzem Suchen fand ich dann die Lösung:

function array_find($haystack, $needle)
{
	$iterator = create_function('$item', 'return strpos($item, \''.$needle.'\')!==false;');
	return array_filter($haystack, $iterator);
}
 
function array_contains($haystack, $needle)
{
	$iterator = create_function('$value, $item', 'return $value or strpos($item, \''.$needle.'\')!==false;');
	return array_reduce($haystack, $iterator, false);
}

Diese beiden Funktionen liefern einmal ein Array mit den gefundenen Elementen. Die andere ein Boolean, ob das gesuchte Element sich irgendwo in den Werten befindet.

Hier ein Beispiel der Anwendung:

$needle = 'foo';
$array = array('affe', 'barfoos', 'cherry', 'dilemma', 'eisberg', 'fastfood');
 
printf('Das Array enthält irgendwo den String "%s": [%s]'.PHP_EOL, $needle, array_contains($array, $needle) ? 'X' : '-');
printf('Die folgenden Elemente enthalten den String "%s": [%s]'.PHP_EOL, $needle, implode(',', array_find($array, $needle)));

Die Ausgabe sieht dann so aus:

Das Array enthält irgendwo den String "foo": [X]
Die folgenden Elemente enthalten den String "foo": [barfoos,fastfood]

Mit diesen Funktionen konnte ich nun sehr elegant – ohne Schleife – die Herausforderung bewältigen. Danke Google, Klamm und tleilax.

  • Share/Bookmark
Posted in Entwicklung | Tagged | Leave a comment

Datenbank-Backup mit dem MySQLDumper

Ich hab heute mal eine “hübsche” Backup & Restore Lösung gesucht, mit der ich automatisiert DB-Backups machen kann und in einer Weboberfläche die einzelnen Backups auch wiederherstellen kann.

Continue reading

  • Share/Bookmark
Posted in Business, Entwicklung | Tagged | 7 Comments