====== [PHP] buildPath ====== {{section>snippets#deprecated&noheader&firstseconly}} /** * Generiert aus allen übergebenen Values einen Pfad mit dem passenden Separator. * Die Funktion ändert auch alle Separatoren in den Umgebungsabhängigen Separator * @paramArray String die verschiedenen Teile aus denen der Pfad gebildet werden soll * @return String der zusammengesetzte Pfad */ function buildPath(){ //Auflistung aller möglichen Separatoren define('C_SEPARATORS', DIRECTORY_SEPARATOR.'\/'); //Pattern um herauszufinden ob der Pfad mit einem Protokol beginnt define('C_PROTOKOL_PATTERN', '/^(?:http|ftp)\:\/\//i'); //Pattern um bestehende Pfade aufzubrechen define('C_SPLIT_PATTERN', '#['.addslashes(C_SEPARATORS).']#'); //Alle Paramer auslesen $items = func_get_args(); //Führende und folgende Separotren entfernen array_walk($items, create_function('&$item, $key', '$item = trim($item, C_SEPARATORS);')); //Leere Elemente entfernen $items = array_filter($items); //Bei einem http oder ftp immer / als separator verwenden. Ansonsten der vom System $separator = (preg_match(C_PROTOKOL_PATTERN, reset($items)) == 1 ) ? '/' : DIRECTORY_SEPARATOR; //Bestehende Pfade aufbrechen $parts = array(); foreach($items as $item) $parts = array_merge($parts, preg_split(C_SPLIT_PATTERN, $item)); //Pfad zusammensetzen return implode($separator, $parts); } {{tag>deprecated:PHP}}