PHP,从TXT文件中删除路径

时间:2011-03-20 14:45:50

标签: php text-files unset

我有,问题..我用ARRAY中的dir显示图像,按钮'删除' - 动作delete.php ..

如果我点击'删除'文件,delete.php应该从dir和TXT文件路径中删除图片。 下面的PHP代码只删除dir中的文件,我不知道如何从TXT文件中删除PATH - 我需要这个脚本..

TXT文件看起来:

../../gallery/glowna//thumb_1300625269.jpg|
../../gallery/glowna//thumb_1300625300.jpg|
../../gallery/glowna/thumb_1300626725.jpg

并删除.php

<?php

$plik=$_POST['usun'];
$nowa = substr($plik, 6, 20);

unlink('../../gallery/glowna/'.$_POST['usun']);
unlink('../../gallery/glowna/'.$nowa);

header("location:usun.php");

?>

我尝试使用下面的代码,但是出了点问题,因为TXT文件正在清理ALL:

$txt = "../../dynamic_ajax.txt";
$img = "../../gallery/glowna/".$_POST['usun'];

$file = file_get_contents($txt, true);
$file2 = explode('|', $file);
$search=array_search($img, $file2);

unset($search);

$separator = implode("|", $file2);

file_put_contents($txt, $separator);

2 个答案:

答案 0 :(得分:0)

好的,我想我明白你的意思。这是我记下来的,你可能想稍微清理一下代码。

$q      = 'thumb_1300625300.jpg';
$files  = file_get_contents('files.txt');
$arr    = explode('|', $files);
foreach ($arr as &$file) {
    if (strpos($file, $q) !== false) {
        $file = '';
        break; 
    } 
}
$files  = implode('|', $arr);
$files  = str_ireplace('||', '|', $files);
file_put_contents('files.txt', $files);

非常简单的代码。

  1. 打开文件并按|
  2. 拆分
  3. 然后它遍历arrray寻找与图像匹配的路径并使其为空,然后跳过循环
  4. 然后你内爆了字符串,然后删除了双|因为我们删除了一个元素
  5. 有几点需要注意。此脚本仅查找路径的一个实例。如果您有多个,那么让循环运行并删除break。您还需要修改str_ireplace('||', '|', $files);,以便查找多个|

答案 1 :(得分:0)

这个怎么样?

$file = file_get_contents($txt, true);
$file2 = explode('|', $file);

$new_array = Array();

foreach ($file2 as $path) {
  if (/* path should be preserved */) {
    $new_array[] = $path;
  }
}

$new_contents = implode("|", $new_array);
file_put_contents($txt, $new_contents);

但请注意,将此文件放在公共服务器上一段时间后,您的TXT文件将会消失。想象一下:

  • 第一个进程(线程)打开要写入的文件(将其截断为0个字符)。
  • 第二个进程读取空文件。
  • 第1页写好文件。
  • 第二个进程写入空文件。

你可以通过使用一些锁机制来解决这个问题,但考虑其他选择。如果该文件中只有路径,为什么不为图像设置特殊文件夹?然后只列出该文件夹,您就知道存在哪些文件。如果你想用图像保存一些元数据,数据库就是你的朋友。