1

我有一个系统可以为各种网站存储某些文件。

一些网站显示为基本网站:

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-”


虽然这不是一个漂亮的文件夹名称,但在正确的轨道上。

鉴于域名格式的多样性,我想创建最简洁、最简单的解决方案。

需要一些建议。

4

1 回答 1

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协议
  • 删除最后一个正斜杠
  • 用连字符替换其余的正斜杠。
于 2013-05-18T00:29:15.370 回答