Преобразование файлов Rackspace Cloud CDN URL из HTTP в HTTPS - PullRequest
0 голосов
/ 26 марта 2012

У меня хранится ряд URL-адресов CDN Rackspace Cloud Files, которые ссылаются на HTTP-адрес, и я хотел бы преобразовать их в эквивалент HTTPS.

URL-адреса CDN Rackspace Cloud Files имеют следующий формат:

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

И эквивалент SSL для этого URL будет:

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

Изменения в URL ( source ):

  1. HTTP становится HTTPS
  2. Второй сегмент URI (в данном примере «r97») становится «ssl»

Кажется, что длина части «r00» может быть разной (как и некоторые «r6» и т. Д.), Поэтому яУ меня возникли проблемы с преобразованием этих URL-адресов в HTTPS.Вот код, который у меня есть до сих пор:

function rackspace_cloud_http_to_https($url)
{
    //Replace the HTTP part with HTTPS
    $url = str_replace("http", "https", $url, $count = 1);

    //Get the position of the .r00 segment
    $pos = strpos($url, '.r');

    if ($pos === FALSE)
    {
        //Not present in the URL
        return FALSE;
    }

    //Get the .r00 part to replace
    $replace = substr($url, $pos, 4);

    //Replace it with .ssl
    $url = str_replace($replace, ".ssl", $url, $count = 1);

    return $url;
}

Это, однако, не работает для URL, где второй сегмент имеет другую длину.

Любые мысли приветствуются.

Ответы [ 2 ]

3 голосов
/ 09 апреля 2014

Я знаю, что это старая версия, но если вы используете эту библиотеку: https://github.com/rackspace/php-opencloud вы можете использовать метод getPublicUrl () для объекта, вам просто нужно использовать следующее пространство имен

use OpenCloud\ObjectStore\Constants as Constant;

// Code logic to upload file
$https_file_url = $response->getPublicUrl(Constant\UrlType::SSL);
1 голос
/ 26 марта 2012

Попробуйте это:

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...