2013-04-27 104 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協議
  • 刪除最後一個正斜槓
  • 用連字符替換正斜槓的其餘部分。