Unsere Leistungen

Wir wollen, dass es Ihnen gut geht. Informieren Sie sich hier, welche Dienst- und Serviceleistungen wir Ihnen anbieten.

Template($tags); $this->array_registeredParsers = array( new StrAPIFunctionsParser(), new CounterFunctionParser(), new IfFunctionParser() ); if(is_array($parser)) { $this->array_registeredParsers = $parser; } } /** * Generiert das Template und gibt es aus/zurck. * * @param $template string/file Template * @param $return bool Return or print template * @param $note bool Echo "Generated by ... " Comment * * @return string complete Template string */ function generate($template, $return = 0, $note = 1) { $template = parent::generate($template, true, $note); foreach($this->array_registeredParsers as $class) { if(is_string($class)) { $classInstance = new $class; } else if(is_object($class)) { $classInstance = $class; } if(is_object($classInstance)) { if(is_subclass_of($classInstance, "AbstractTemplateParser")) { $template = $classInstance->parse($template); } else { $template = "TemplateParserKlasse " . get_class($classInstance) . " ist nicht von AbstractTemplateParser abgeleitet!"; break; } } } if ($return) { return $template; } echo $template; } } /** * class AbstractTemplateParser * * Abstrakte Superklasse fr alle Templateparser * * @author Stefan Welpot * @version 1.0 */ class AbstractTemplateParser { /** * Konstruktor */ function AbstractTemplateParser() {} /** * Parst das bergeben Template * * @param $template string das zu parsende Template * * @return string das geparste Template */ function parse($template) { return $template; } } /** * class IfFunctionParser * * Implemenation des AbstractTemplateParser zum Auswerten von * If-Konstrukten im Template * Als Tags im Template sind vorgesehen: * - {if(Bedigung)} * - {else if(Bedingung)} * - {else} * - {/if} * * Ein If-Konstrukt besteht dabei mindestens aus {if(Bedingung)} und einem abschlieenden {/if}. * Das {else if(Bedingung)} kann beliebig oft hintereinander verwendet werden. * Die Konstrukte an sich knnen beliebig tief geschachtelt werden. * Die Bedinungen der {if()}- und {else if()}-Teile werden durch eval ausgewertet * und knnen somit auch PHP-Funktionen interpretieren. * * * @author Stefan Welpot * @version 1.0 */ class IfFunctionParser extends AbstractTemplateParser { /** * Regexp-Pattern fr {if(Bedingung)} * @var pattern_if */ var $pattern_if = "\{if\040*\((.*?)\)\}"; /** * Regexp-Pattern fr {else if(Bedingung)} * @var pattern_elseif */ var $pattern_elseif = "\{else if\040*\((.*?)\)\}"; /** * Regexp-Pattern fr {else} * @var pattern_else */ var $pattern_else = "\{else\}"; /** * Regexp-Pattern fr {/if} * @var pattern_endif */ var $pattern_endif = "\{\/if\}"; /** * Lnge des {if(Bedinung)}-Tags ohne Bedingung * @var patternlength_if */ var $patternlength_if = 6; /** * Lnge des {else if(Bedinung)}-Tags ohne Bedingung * @var patternlength_elseif */ var $patternlength_elseif = 11; /** * Lnge des {else}-Tags * @var patternlength_else */ var $patternlength_else = 6; /** * Lnge des {/if}-Tags * @var patternlength_endif */ var $patternlength_endif = 5; /** * Konstruktor */ function IfFunctionParser() { $this->AbstractTemplateParser(); } /** * @see AbstractTemplateParser#parse(string) */ function parse($template) { $array2_uncompletedConstructs = array(); //geffnete, aber noch nicht geschlossene funktionen //hilfsvariablen $array_match_all = array(); $array_match_part = array(); $uncompletedConstructsIndex = 0; $elseifIndex = 0; $currentOffset = 0; $oldOffset = -1; $array_construct = array(); $pattern_all = "/(?is)(" . $this->pattern_if . "|" . $this->pattern_elseif . "|" . $this->pattern_else . "|" . $this->pattern_endif . ")/"; //das template solange nach konstruktteilen durchsuchen bis keine mehr gefunden werden while($currentOffset != $oldOffset) { $oldOffset = $currentOffset; //wenn irgendein teil einer if-konstruktion gefunden wird if(preg_match($pattern_all, $template, $array_match_all, PREG_OFFSET_CAPTURE, $currentOffset) > 0) { //herausfinden, welcher teil gefunden wurde //if-teil if(preg_match("/(?is)" . $this->pattern_if . "/", $array_match_all[0][0], $array_match_part) > 0) { $uncompletedConstructsIndex++; //inkrement openFunctionIndex $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['condition'] = $array_match_part[1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_start'] = $array_match_all[0][1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_start'] + $this->patternlength_if + strlen($array_match_part[1]); $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['if']['pos_end']; } //elseif-teil else if(preg_match("/(?is)" . $this->pattern_elseif . "/", $array_match_all[0][0], $array_match_part) > 0) { $elseifIndex = count($array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif']); $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['condition'] = $array_match_part[1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_start'] = $array_match_all[0][1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_start'] + $this->patternlength_elseif + strlen($array_match_part[1]); $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['elseif'][$elseifIndex]['pos_end']; } //else-teil else if(preg_match("/(?is)" . $this->pattern_else . "/", $array_match_all[0][0], $array_match_part) > 0) { $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_start'] = $array_match_all[0][1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_start'] + $this->patternlength_else; $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['else']['pos_end']; } //endif else if(preg_match("/(?is)" . $this->pattern_endif . "/", $array_match_all[0][0], $array_match_part) > 0) { $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_start'] = $array_match_all[0][1]; $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_end'] = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_start'] + $this->patternlength_endif; $currentOffset = $array2_uncompletedConstructs[$uncompletedConstructsIndex]['endif']['pos_end']; //gefundene komplette funktion sofort ersetzen $array_construct = array_pop($array2_uncompletedConstructs); $uncompletedConstructsIndex--; $template = $this->replaceConstruct($array_construct, $template); //offset korrigieren = anfang der ersetzten funktion $currentOffset = $array_construct['if']['pos_start']; } } } // end while if($uncompletedConstructsIndex > 0) { // wenn noch offene Funktionen vorhanden sind => Fehler im Template $template = "Fehler in IF-Konstruktionen. Folgende If-Statements sind nicht abgeschlossen:
\n"; foreach($array2_uncompletedConstructs as $array_construct) { $template .= "- {if(" . $array_construct['if']['condition'] . ")}
\n"; } } return $template; } // end function /** * Ersetzt die als Array bergebene Funktion durch * den ersten Teil mit einer wahren Bedingung * * @param $array_construct Array das komplette If-Konstrukt das ausgewertet werden soll * @param $template string das Template in dem das Konstrukt ersetzt werden soll * * @return string das Template mit dem ersetzten Konstrukt */ function replaceConstruct($array_construct, $template) { $array_elseif = array(); $key = 0; $replace_text = ""; $boolConditionTrue = false; //prfen ob der if-teil wahr ist und $replace_text finden if(eval("return " . $array_construct['if']['condition'] . ";")) { if(array_key_exists('elseif', $array_construct)) { //wenn ein elseif-teil existiert $replace_text = substr($template, $array_construct['if']['pos_end'], $array_construct['elseif'][0]['pos_start'] - $array_construct['if']['pos_end']); } else if(array_key_exists('else', $array_construct)) { //wenn nur ein else-teil existiert $replace_text = substr($template, $array_construct['if']['pos_end'], $array_construct['else']['pos_start'] - $array_construct['if']['pos_end']); } else {//wenn der nchste teil schon endif ist $replace_text = substr($template, $array_construct['if']['pos_end'], $array_construct['endif']['pos_start'] - $array_construct['if']['pos_end']); } } else { //alle elseif-teile prfen if(is_array($array_construct['elseif'])) { foreach($array_construct['elseif'] as $key => $array_elseif) { if(eval("return " . $array_elseif['condition'] . ";")) { $boolConditionTrue = true; if(array_key_exists(($key + 1), $array_construct['elseif'])) { //wenn ein weiterer elseif-teil existiert $replace_text = substr($template, $array_elseif['pos_end'], $array_construct['elseif'][$key+1]['pos_start'] - $array_elseif['pos_end']); } else if(array_key_exists('else', $array_construct)) { //wenn nchster teil nur ein else-teil ist $replace_text = substr($template, $array_elseif['pos_end'], $array_construct['else']['pos_start'] - $array_elseif['pos_end']); } else {//wenn der nchste teil schon endif ist $replace_text = substr($template, $array_elseif['pos_end'], $array_construct['endif']['pos_start'] - $array_elseif['pos_end']); } break; } } } //wenn bisher noch keine wahre Bedingung gefunden wurde if(!$boolConditionTrue) { if(array_key_exists('else', $array_construct)) { // wenn ein else-teil existiert $replace_text = substr($template, $array_construct['else']['pos_end'], $array_construct['endif']['pos_start'] - $array_construct['else']['pos_end']); } else { // sonst wird das gesamte kontrukt durch einen leeren string ersetzt $replace_text = ""; } } } // end else //if-konstruktion durch wahren teil ersetzen $template = substr_replace($template, $replace_text, $array_construct['if']['pos_start'], $array_construct['endif']['pos_end'] - $array_construct['if']['pos_start']); return $template; } } /** * class CounterFunctionParser * * Implemenation des AbstractTemplateParser zur Verwendung von * Zhlern im Template * Als Tag im Template ist vorgesehen: * - {counter PARAMETER} * Die PARAMETER sind: * - name=ZHLERNAME * - start=STARTWERT (default: 0) * - step=SCHRITTWEITE (default: 1) * - print=(true|false) (default: true) * Alle Parameter sind optional. * * ber die Name-Eigenschaft knnen mehrere unschiedliche Zhler verwendet werden. * Bei jedem Vorkommen des {counter}-Tags wird der gleichnamige Zhler um STEP erhht. * Wird die Eigenschaft print auf true oder gar nicht gesetzt erfolgt eine Ausgabe des * Zhlerwerts an der Stelle des {counter}-Tags * * * @author Stefan Welpot * @version 1.0 */ class CounterFunctionParser extends AbstractTemplateParser { /** * Regexp-Pattern fr {counter PARAMETER} * @var pattern_countertag */ var $pattern_countertag = "/(?si)\{counter(.*?\})/"; /** * Regexp-Pattern fr Parameter name=NAME * @var pattern_countername */ var $pattern_countername = "/(?i)name\040?\=(.+?)(\040|\})/"; /** * Regexp-Pattern fr Parameter start=STARTWERT * @var pattern_counterstart */ var $pattern_counterstart = "/(?i)start\040?\=(\d+?)(\040|\})/"; /** * Regexp-Pattern fr Parameter step=SCHRITTWEITE * @var pattern_counterstep */ var $pattern_counterstep = "/(?i)step\040?\=(\d+?)(\040|\})/"; /** * Regexp-Pattern fr Parameter print=(true|false) * @var pattern_counterprint */ var $pattern_counterprint = "/(?i)print\040?\=(true|false)(\040|\})/"; /** * Defaultwert fr Parameter name * @var default_countername */ var $default_countername = "unnamed"; /** * Defaultwert fr Parameter start * @var default_counterstart */ var $default_counterstart = 0; /** * Defaultwert fr Parameter step * @var default_counterstep */ var $default_counterstep = 1; /** * Defaultwert fr Parameter print * @var default_counterprint */ var $default_counterprint = true; /** * Konstruktor */ function CounterFunctionParser() { $this->AbstractTemplateParser(); } /** * @see AbstractTemplateParser#parse(string) */ function parse($template) { $counterParameters = ""; $counterKey = ""; $array_matches = array(); $array_countermatches = array(); $array_initCounters = array(); $boolPrint = $this->default_counterprint; $boolDoNotInkr = false; preg_match_all($this->pattern_countertag, $template, $array_countermatches, PREG_SET_ORDER); for($i = 0; $i < count($array_countermatches); $i++) { $counterKey = ""; $counterParameters = $array_countermatches[$i][1]; //Attribut Countername auslesen, falls vorhanden preg_match($this->pattern_countername, $counterParameters, $array_matches); if(count($array_matches) > 0) { $counterKey = $array_matches[1]; } else { // sonst defaultname $counterKey = $this->default_countername; } if(!array_key_exists($counterKey, $array_initCounters)) { // neuen Counter initialisieren $array_initCounters[$counterKey]['value'] = $this->default_counterstart; $array_initCounters[$counterKey]['step'] = $this->default_counterstep; $boolDoNotInkr = true; } //Attribut step preg_match($this->pattern_counterstep, $counterParameters, $array_matches); if(count($array_matches) > 0) { $array_initCounters[$counterKey]['step'] = $array_matches[1]; } //Attribut start preg_match($this->pattern_counterstart, $counterParameters, $array_matches); if(count($array_matches) > 0) { $array_initCounters[$counterKey]['value'] = $array_matches[1]; $boolDoNotInkr = true; } // value regulr erhhen if(!$boolDoNotInkr) { $array_initCounters[$counterKey]['value'] = $array_initCounters[$counterKey]['value'] + $array_initCounters[$counterKey]['step']; } else { $boolDoNotInkr = false; } //Attribut print preg_match($this->pattern_counterprint, $counterParameters, $array_matches); if(count($array_matches) > 0) { $boolPrint = (strcasecmp("true", $array_matches[1]) == 0) ? true : false; } else { $boolPrint = $this->default_counterprint; } if($boolPrint) { $template = preg_replace($this->pattern_countertag, $array_initCounters[$counterKey]['value'], $template, 1); } else { $template = preg_replace($this->pattern_countertag, '', $template, 1); } } return $template; } } /** * class StrAPIFunctionsParser * * Implemenation des AbstractTemplateParser zum Auswerten von * ContenidoStrAPIFunktionen. * Als erlaubte Funktionen sind vorgesehen: * - {capiStrTrimHard(STRING, LNGE)} * - {capiStrTrimAfterWord(STRING, LNGE)} * - {capiStrTrimSentence(STRING, LNGE)} * * Die die Funktionen werden ertrahiert, ausgewertet und anschlieend durch das Ergebnis ersetzt. * * * @author Stefan Welpot * @version 1.0 */ class StrAPIFunctionsParser extends AbstractTemplateParser { /** * zu ersetzende Funktionen * @var array_strAPIFunctions */ var $array_strAPIFunctions = array( "capiStrTrimHard", "capiStrTrimAfterWord", "capiStrTrimSentence" ); /** * Konstruktor */ function StrAPIFunctionParser() { $this->AbstractTemplateParser(); } /** * @see AbstractTemplateParser#parse(string) */ function parse($template) { $anzahlMatches = 0; $array2_matches = array(); $evaledCode = ""; foreach($this->array_strAPIFunctions as $functionname) { $anzahlMatches = preg_match_all("/(?si)\{" . preg_quote($functionname, "/") . "\(\"?(.*?)\"?,\040?(\d+?)\)\}/", $template, $array2_matches); for($i = ($anzahlMatches - 1); $i >= 0; $i--) { $evaledCode = eval("return " . $functionname . "(\"" . $array2_matches[1][$i] . "\", " . $array2_matches[2][$i] . ");"); $template = preg_replace( "/(?si)\{" . preg_quote($functionname, "/") . "\(\"?" . preg_quote($array2_matches[1][$i], "/") . "\"?,\040?" . preg_quote($array2_matches[2][$i], "/") . "\)\}/", $evaledCode, $template ); } //end for(i) } // end foreach return $template; } } ?>

Check-up Service

Bestimmung von

  • Blutdruck
  • Blutzucker
  • Cholesterin (aufgeschlüsselt in HDL, LDL, Triglyceride)
  • Gewicht und BMI
  • Körperfett und Körperwasser

Beratung

Durch Studium, Ausbildung sowie regelmäßige Weiterbildungen haben wir umfangreiche pharmazeutische Kenntnisse erworben und sind immer auf dem neuesten fachlichen Wissensstand. Dieses umfangreiche Fachwissen wirkt bei all unserem Tun mit, kommt aber bei der persönlichen Beratung besonders zum Tragen. Bei einem vertraulichen Gespräch finden wir gemeinsam mit Ihnen Antworten auf Ihre Gesundheits- und Arzneimittelfragen. Nehmen Sie unsere kompetente Beratung in Anspruch, wenn Sie Unterstützung brauchen. Wir nehmen uns gern Zeit für Sie.

Kostenfreier Lieferservice

In und um Leipzig für Privathaushalte, Arztpraxen, Pflegeeinrichtungen, Vereine und Firmen durch zuverlässige Kuriere

Blitzschnelle Beschaffung dringender Medikamente

Wir können Ihnen innerhalb einer halben Stunde, z.B. noch während Ihres Einkaufes in unserem Einkaufszentrum, Ihre Medikamente kurzfristig beschaffen - ohne Aufpreis!

Kosmetikberatung

Ein vielfältiges Angebot apothekenexklusiver Kosmetikprodukte steht für Sie zum Testen und Kaufen bereit.

Aus folgenden Marken können Sie auswählen:
EUCERIN, VICHY, FREI, OLIVENÖL, AVENE

Homöopathieberatung

Kein fauler Zauber oder falsche Magie - Schüßler-Salze helfen und lindern Erkrankungen

Die Wirkung von Salzen nach Dr. Schüßler ist in anerkannten Laborstudien mehrfach nachgewiesen worden. Die Minimalverdünnung der Stoffe und Salze greift schonend in Zellabläufe ein und reguliert sowohl Über- als auch Unterfunktionen von Organen und Geweben.

Dieses regulierende Talent der Schüßler-Salze erschließt dabei immer mehr Anwendungsbereiche. Sie können als zusätzliche Therapie eingesetzt werden, um die stoffliche Harmonie im Körper wiederherzustellen. Besonders wirkungsvoll sind diese Effekte bei chronischen, mangelbedingten Erkrankungen. Aber auch schnell einsetzende Wirkungen kann man z.B. bei Verkrampfungen und Kopfschmerzzuständen erreichen. Die Salze sind nebenwirkungsfrei und deren Anwendung ist ganz einfach.

Sind Sie neugierig geworden? Wir halten ein reichhaltiges Sortiment homöopathischer Arzneimittel und Salze nach Dr. Schüßler sowie umfangreiches Informationsmaterial zur Abgabe für Sie bereit.

Das 4 Mal jährlich erscheinende Kundenmagazin der Deutschen Homöopathischen Union DHU „GESUND durch Homöopathie" können Sie als interessierte Kunden an alternativen Therapiemöglichkeiten ebenfalls kostenlos bei uns erhalten.

Lassen Sie sich bei weiterführenden Fragen von unserem Fachpersonal beraten.

Aromaberatung und Aromatherapie

Unter Aromatherapie versteht man die kontrollierte Anwendung ätherischer Öle, um die Gesundheit zu erhalten sowie Körper, Geist und Seele positiv zu beeinflussen.

Wir laden Sie herzlich zur Duftberatung zu uns ein. Erleben, riechen, fühlen und schmecken Sie natürliche Duftöle höchster Qualität und in vielfältiger Form in unserer Oase der Düfte. Lassen Sie sich z.B. mit einer entspannenden Hand- oder Kopfmassage verwöhnen oder für zu Hause individuelle Rezepturen mit Produkten von Taoasis und Taomed anfertigen.

Wir sind Versorgungsapotheke für Pflegehilfsmittel

Die Pflege eines Angehörigen zu Hause ist oft eine anstrengende und emotional belastende Situation. Daneben fallen zusätzliche Kosten zur Pflege an, die meist nicht allein getragen werden können. Wir als Apotheke haben die Möglichkeit, Sie zu unterstützen!

Von den Pflegekassen haben wir die Genehmigung erhalten, Ihnen zur Erleichterung der Pflege Pflegehilfsmittel bis zu einem Betrag von monatlich 40,-€ zur Verfügung zu stellen. Dazu zählen u.a. Bettschutzeinlagen, Einmalhandschuhe, Desinfektionsmittel und Schutzschürzen. Voraussetzungen sind, dass der zu pflegende Angehörige über eine Pflegestufe verfügt, zu Hause gepflegt wird und der Antrag von der Pflegekasse genehmigt wird. Eine ärztliche Verordnung wird nicht benötigt. Anträge zur Kostenübernahme liegen in der Apotheke bereit, gern füllen wir diese zusammen mit Ihnen aus. Die Abrechnung und Dokumentation gegenüber Ihrer Kasse übernehmen wir für Sie.

Anmessen von Kompressionswaren und Bandagen

Bei uns erhalten Sie Kompressionsstrümpfe, die nach Ihren individuellen Maßen angefertigt werden. Wenn Sie eine ärztliche Verordnung haben, kommen in der Regel keine Mehrkosten auf Sie zu - und das zu einer Top-Qualität. Sprechen Sie uns an - wir beraten Sie gern!

Inkontinenzberatung und Abgabe von Inkontinenzprodukten

Wir finden bei einer vertraulichen Beratung garantiert das passende Produkt für Ihre Bedürfnisse. Dazu können Sie gern kostenlose Produktproben verschiedener Hersteller zum Testen von uns erhalten. Aufgrund gesetzlicher Vorgaben ist es uns derzeit nicht möglich, alle Versicherten der verschiedenen Krankenkassen mit Inkontinenzprodukten auf Kassenrezept zu versorgen. Wir informieren Sie gern, ob und unter welchen Voraussetzungen die Abgabe der Produkte über die Apotheke erfolgen kann. Sprechen Sie uns an.

Weitere Leistungen

Verleih und Verkauf von Inhalationsgeräten für Erwachsene und Kinder, Milchpumpen, Babywaagen, Blutdruckmeßgeräten und anderen Medizinprodukten
Überprüfung Ihrer Haus- und Reiseapotheke sowie von KFZ-Verbandkästen
Beschaffung von Tierarzneimitteln
Beschaffung internationaler Arzneimittel
Individuelle Arzneimittelherstellung

Wir stellen individuelle Rezepturen aufgrund ärztlicher Verordnung oder auf Kundenwunsch in unserem apothekeneigenen Labor her. Dabei lösen wir auch mögliche Probleme bei Stabilität, Zusammensetzung und Haltbarkeit.

Kostenlose und fachgerechte Entsorgung von Altmedikamenten
Kundenzeitschriften

Diese Kundenzeitschriften halten wir kostenfrei für Sie bereit: Apotheken-Umschau, Diabetiker-Ratgeber, Senioren-Ratgeber, Medizini, Baby und Familie.

Auch bei uns erhältlich: „GESUND durch Homöopathie" - das Kundenmagazin der Deutschen Homöopathischen Union und Hauptsache Gesund - dass Magazin zur Sendung des MDR

Präsente

Suchen Sie nach einem Geschenk für Jung oder Alt? Gern stellen wir Ihnen ein passendes Geschenk zusammen und verpacken es für Sie - kostenlos! Natürlich halten wir auch Geschenkgutscheine für Sie bereit.

Ein umfangreiches Freiwahlangebot rundet unser Sortiment ab

Kritik

Unser Ziel ist es, unsere Angebote und Leistungen stets für Sie zu erweitern und zu verbessern. Für Anregungen und konstruktive Kritik haben wir daher immer ein offenes Ohr. Wir freuen uns über Ihre Kontaktaufnahme per E-Mail, Telefon oder Post.

nach oben