Heim  >  Artikel  >  Backend-Entwicklung  >  Ideen und Umsetzung der automatischen Nummerierung neuer Dateien in PHP

Ideen und Umsetzung der automatischen Nummerierung neuer Dateien in PHP

高洛峰
高洛峰Original
2016-11-30 09:30:381858Durchsuche

Voraussetzung: Beim Anlegen neuer Dateien im System kann eine automatische Nummerierung implementiert werden. Der Standarddateiname für eine neue Textdatei lautet beispielsweise: Neues Textdokument.txt. Wenn Sie mit der Erstellung einer neuen Textdatei fortfahren, ändert sich der Dateiname automatisch: Neues Textdokument (2).txt wird 3, 4, 5 sein... Wie nutzt man diesen Algorithmus mit PHP?
Ursprünglich wollte ich dafür eine Schleife verwenden und einen Zähler zum Inkrementieren verwenden. Dieses TME kann eine Datenbank, eine Datei oder eine Konfigurationsdatei sein . Es hängt davon ab, wie Sie es machen. Wenn Sie es jedes Mal wiederholen müssen, wenn Sie eine neue Datei erstellen, ist es anstrengend, den Code zu kopieren folgt:
$dir="/web/csp/images/test/";
if(!file_exists($dir.'cache.txt')){
file_put_contents ($dir.'cache.txt',1);
file_put_contents($dir. 'Neue Datei.txt','');
}else{
$num = file_get_contents($dir.' cache.txt');
$num ++;
$name = ' Neue Datei erstellen('.$num.').txt'; $num);
file_put_contents($dir.$name,'');
}?>
if(file_exists($filename . '.tmp'))
{
$num = (int) file_get_contents($filename . '.tmp') + 1;
$fileinfo = pathinfo( $filename);
file_put_contents($fileinfo['filename'] . '(' . $num . ' ).' .$fileinfo['extension'], $content);
file_put_contents($filename . '
}
else
{
file_put_contents( $filename, $content);
file_put_contents($filename . '.tmp', 1);
}
createFile('test.txt'); 🎜>
Der dritte Typ, zirkulär
Code kopieren Der Code lautet wie folgt:

$files = scandir('.'); im Web-Stammverzeichnis
$num = 0;
$str = 'Neues Textdokument'
foreach ($files as $k=> $file) {
if (is_file($ file) && preg_match('/(.*)((d+)).txt/', $file, $matched) ) {
$num = $matched[2]>$num ? : $num;
}
$filename = $num == 0 ? $str . ).txt';
if (fopen($filename, 'w')) {
echo 'Erfolgreich eine Datei erstellen: ' Zu den Dateien gehören
Neue Datei.txt
Neue Datei(2).txt
Neue Datei(3).txt
Diese drei Dateien, wenn Sie
Neue Datei (2).txt Neue Datei (3).txt
zu diesem Zeitpunkt, und führen Sie dann dieses PHP aus, da es beim Cache.txt-Zählproblem Probleme gibt, wenn Sie es erneut ausführen. Die neu erstellte Datei ist
Neue Datei (4). txt
wird nicht intelligent basierend auf der Sequenz erstellt
Als Ergebnis des oben genannten Vorgangs sollte der Name der neu erstellten Datei unter Windows
Neue Datei (2).txt
2. Zum zweiten Absatz muss es zunächst das oben genannte Problem geben, und was noch schwerwiegender ist, ist der Unterschied zwischen dem Dateinamen und der Erweiterung der erstellten Datei.
d.h.:
test.txt
test(2)txt
test(3)txt
test(4)txt
Der Grund dafür ist, dass beim Kombinieren des Dateinamens der Punkt der Erweiterung wird nicht hinzugefügt.
Kopieren Sie den Code. Der Code lautet wie folgt:
file_put_contents($fileinfo['filename'] . '(' . $num . ')' .$ fileinfo['extension'], $ Inhalt);


um den Absatz interessanter und kürzer zu machen
Die Effizienz sollte besser sein als die Verwendung von Cache (tmp-Datei) oder regulärem Ausdruck (preg_match) oben.
Kopieren code Der Code lautet wie folgt:
$prefix = 'Neues Textdokument'
$suffix = '.txt'; /Neues Textdokument.txt
$i = 1;
while(file_exists($t)){//Neues Textdokument (d+).txt
$t = $prefix +$i.')'.$suffix;
}
fclose(fopen($t, 'w'));

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn