0

やあみんな私はトリッキーな問題を解決しようとしています。現在、私は次のようなフォルダ構造を持っています:

uploads / Event-12 / 1234-Johne-Doe/[…]uploads/ Event-32 / 1234-Johne-Doe/[…]

そのため、独自のフォルダを持つ多くのイベントがあります。その中には、ユーザーのID(1234)の後に姓名が続くような名前のサブフォルダーがあります。JohnDoe氏がEvent-12とEvent-32にフォルダを持っていることがわかります。

しかし、John Doeが名前を変更した場合はどうなりますか(何らかの理由で…)。したがって、すべてのフォルダの名前を再帰的に変更する必要があります。そうしないと、すべてのリンクが壊れます。

PHPでそれを行う方法。正しいパスを指定することで、フォルダの名前を一度に簡単に変更できます。PHPに一致するすべてのディレクトリを検索させるための優れたソリューションはありますか?

ご挨拶。

4

3 に答える 3

2

このリンクのようにすべてのフォルダを一覧表示し、必要なフォルダの名前を変更できます。

<?php
if ($handle = opendir('.')) {
    $blacklist = array('.', '..', 'somedir', 'somefile.php');
    while (false !== ($file = readdir($handle))) {
        if (!in_array($file, $blacklist)) {
            echo "$file\n";
        }
    }
    closedir($handle);
}
?>
于 2013-02-26T16:37:15.347 に答える
1

scandir()見つかった各ディレクトリを利用して名前を変更する再帰関数を作成することをお勧めします。

PHPマニュアルから:http ://www.php.net/manual/en/function.scandir.php

そうは言っても、フォルダ名にはユーザーIDを使用することをお勧めします。ディレクトリに名前を付けたり、ユーザーデータを保存したりするために更新できる変数は絶対に使用しないでください。

于 2013-02-26T16:34:56.973 に答える
0

うん、これはデータベース駆動型のアプリケーションですか?もしそうなら、あなたはこの問題を解決しようとしてはいけません。あなたが心臓発作を起こしているとき、医者は症状を治療しません:)あなたのアプリケーションはトリプルバイパスと同等のコーディングを求めて叫んでいます。

まず、フォルダから名前を削除することをお勧めします。スクリプトを書き直して、IDを持つフォルダーのみを作成します(これはunqiueだと思います)。このように、名前が変更されても問題ありません。

于 2013-02-26T16:49:24.693 に答える