User Tools

Site Tools


deprecated:phpbuildpath

[PHP] buildPath

/**
 * 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);
}
deprecated/phpbuildpath.txt · Last modified: 09.12.2013 09:39:54 (external edit)