2012-10-12 31 views
1

鑑於路徑/書籍/ Aaronovitch,Ben/Rivers of London/9780575097568,如何使用PHP重命名實際文件夾名稱以刪除空格?如何使用PHP刪除文件夾內的空間

+4

請詳細信息和代碼。你有什麼嘗試? –

+0

我應該說過,這是在Windows操作系統上。實際路徑是c:/ server/www/blah/blah/books/Aaronovitch,Ben/Rivers of London/9780575097568。 –

回答

0

PHP函數str_replace函數:

$newPath = str_replace(' ', '', $path); 

然後用重命名功能。

rename($path, $newPath); 
+0

這適用於路徑,但我需要重新命名實際的文件夾本身。這仍然可以重命名文件夾嗎? –

+0

應該說過,這是在Windows操作系統 –

+0

實際路徑將是c:/ server/www/blah/blah/books/Aaronovitch,Ben/Rivers of London/9780575097568。 –

1

你可以嘗試以下

echo renameRecrisive(__DIR__, "xx_x/yyy yyy/zz z/fff"); 

輸出

/public_html/www/stac/xx_x/yyy_yyy/zz_z 

功能

/** 
* 
* @param string $path Current path ending with a slash 
* @param string $pathname Path you cant to rename 
* @param string $sep Optional Seprator 
*/ 
function renameRecrisive($path, $pathname, $sep = "_") { 
    $pathSplit = array_filter(explode("/", $pathname)); 
    $dir = $path; 
    while ($next = array_shift($pathSplit)) { 
     $current = $dir . "/" . $next; 
     if (! is_dir($current)) { 
      break; 
     } 
     if (preg_match('/\s/', $next)) { 
      $newName = str_replace(" ", $sep, $next); 
      rename($current, $dir . "/" . $newName); 
      $dir .= "/" . $newName; 
     } else { 
      $dir .= "/" . $next; 
     } 
    } 

    return $dir ; 
} 
0

這將走在每個層次,重命名每個組件,如果它包含空格。

$patharray = split('/', $path); 
$newpatharray = str_replace(' ', '', $patharray); 

$oldpath = $patharray[0]; 
$newpath = $newpatharray[0]; 
$i = 0; 

while (true) { 
    if ($patharray[$i] != $newpatharray[$i]) { 
    rename($oldpath, $newpath); 
    } 
    $i++; 
    if ($i >= count($patharray) { 
    break; 
    } 
    $oldpath .= "/".$patharray[$i]; 
    $newpath .= "/".$newpatharray[$i]; 
} 
相關問題