2013-04-27 3 views
1

У меня есть система, которая будет хранить определенные файлы для различных сайтов.Создание имен папок из URL php

Некоторые веб-сайты отображаются как основные:

www . myrandomsite . com 

www . yetanothersite . com /sublevel/ 

http: somefunky.sub . org 

... и так далее.

Я хотел бы преобразовать их в имена папок самым безопасным и разумным способом.


То, что я до сих пор:

preg_replace('/[^A-Za-z0-9 ]/', '-', 'www.yetanothersite.com/sublevel/'); 

возвращается: строка (32) "WWW-yetanothersite-ком-sublevel-"


Это вряд ли довольно но имя папки, но на правильном пути.

Учитывая разнообразие форматов доменных имен, я хотел создать самое простое и простое решение.

Нужен совет.

+0

Нужны ли имена папок для человека? –

+0

Вид. Я знаю, что люди будут видеть их, когда они будут там перемещаться. Также будет функция, которая находит папку по доменному имени, поэтому она должна быть последовательной. – Orangeman555

+0

Решение может быть зависимым от ОС. Должно ли это работать на любой ОС или у вас есть конкретная цель? – Floris

ответ

0

Попробуйте следующее:

$urls = array('www.myrandomsite.com', 'http://somefunky.sub.org', 'http://www.yetanothersite.com/sublevel/', 'http://stackoverflow.com/users///1401975/'); 

// PHP 5.3+ IS A MUST 
$folders = preg_replace_callback('#(?<protocol>(https?|ftp)://)|(?<end>/+(?=$))|(?<replace>/+)#', function($m){ 
    if(isset($m['protocol'][1])){return '';} 
    if(isset($m['end'][0])){return '';} 
    return '-'; 
}, $urls); 
print_r($folders); 

Выход:

Array 
(
    [0] => www.myrandomsite.com 
    [1] => somefunky.sub.org 
    [2] => www.yetanothersite.com-sublevel 
    [3] => stackoverflow.com-users-1401975 
) 

Сценарий:

  • удалить HTTP, HTTPS, FTP протокол
  • удалите последнюю косую черту
  • замените остальную часть косых черт дефисом.
Смежные вопросы