从URL php创建文件夹名称

时间:2013-04-27 03:35:44

标签: php regex string parsing dns

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

有些网站显示为基本:

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


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

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

需要一些建议。

1 个答案:

答案 0 :(得分: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协议
  • 删除最后一个正斜杠
  • 用连字符替换其余的正斜杠。