2012-03-26 13 views
0

Ich habe eine Reihe von CDN-URLs für Rackspace-Cloud-Dateien gespeichert, die auf eine HTTP-Adresse verweisen, und ich möchte sie in das HTTPS-Äquivalent konvertieren.Konvertieren von Rackspace-Cloud-Dateien CDN-URLs von HTTP zu HTTPS

Rackspace Cloud Files CDN URLs sind in folgendem Format:

http://c186397.r97.cf1.rackcdn.com/CloudFiles Akamai.pdf

Und das SSL-Äquivalent für diese URL wäre:

https://c186397.ssl.cf1.rackcdn.com/CloudFiles Akamai.pdf

Die Änderungen Die URL lautet (source):

  1. HTTP wird HTTPS
  2. Das zweite URI-Segment ('R97' in diesem Beispiel) wird zu 'ssl'

Der 'R00' Teil in der Länge zu variieren scheint (wie manche 'r6' usw.), so dass ich Probleme habe, diese URLs in HTTPS umzuwandeln. Hier ist der Code, den ich bisher habe:

Dies funktioniert jedoch nicht für URLs, wo das zweite Segment eine andere Länge hat.

Alle Gedanken geschätzt.

Antwort

1

Try this:

function rackspace_cloud_http_to_https($url) 
{ 
    $urlparts = explode('.', $url); 

    // check for presence of 'r' segment 
    if (preg_match('/r\d+/', $urlparts[1])) 
    { 
     // replace appropriate segments of url 
     $urlparts[0] = str_replace("http", "https", $urlparts[0]); 
     $urlparts[1] = 'ssl'; 

     // put url back together 
     $url = implode('.', $urlparts); 
     return $url; 
    } 
    else 
    { 
     return false; 
    } 
} 
+0

Nur getestet und es funktioniert mit verschiedenen Länge Teile. Vielen Dank. –

+0

Prost, es könnte einige Syntaxfehler geben, da ich es von meinem Kopf geschrieben habe, aber ich bin froh, dass es funktioniert! – jessica

2

Ich weiß, das alt ist, aber wenn man diese Bibliothek verwenden: https://github.com/rackspace/php-opencloud Sie können die getPublicUrl() -Methode für das Objekt verwenden, müssen Sie nur die folgende Namespace verwenden

use OpenCloud\ObjectStore\Constants as Constant; 

// Code logic to upload file 
$https_file_url = $response->getPublicUrl(Constant\UrlType::SSL);