我有,问题..我用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);
答案 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);
非常简单的代码。
有几点需要注意。此脚本仅查找路径的一个实例。如果您有多个,那么让循环运行并删除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文件将会消失。想象一下:
你可以通过使用一些锁机制来解决这个问题,但考虑其他选择。如果该文件中只有路径,为什么不为图像设置特殊文件夹?然后只列出该文件夹,您就知道存在哪些文件。如果你想用图像保存一些元数据,数据库就是你的朋友。