gut, über Stringparsing kann man reden. Das ist nicht jedermenschs Geschmack. Danke für das Alternativbeispiel (<mecker> ich hätte aber noch ein Space hinter die Punkte gemacht </mecker>).
Selbstverständlich 😉 Aber es geht noch schöner, unter der Voraussetzung daß ohnehin eine Template'Engine geladen ist:
$url = $this->render(
'%proto%://%auth%/%path%?%params%', array(
'proto' => 'https',
'auth' => 'example.com',
'path' => 'index.html',
'params'=> $params
));
MFG