2013-04-27 89 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-COM-sublevel-”


这很难说是一个相当文件夹名称,但在正确的轨道上。

鉴于域名格式的多样性,我想创建最干净和最简单的可能解决方案。

需要一些建议。

+0

文件夹名称是否必须是人类可读的? – 2013-04-27 03:43:45

+0

类别。我知道人类在他们导航时会看到他们。还有一个功能可以通过域名查找文件夹,因此它必须一致。 – Orangeman555 2013-04-27 03:59:37

+0

该解决方案可能与操作系统有关。这是否需要在任何操作系统上运行,或者您是否有特定的目标? – Floris 2013-04-27 13:43:59

回答

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协议
  • 删除最后一个正斜杠
  • 用连字符替换正斜杠的其余部分。
相关问题