我的页面上有一个删除按钮,删除按钮必须删除我数据库中的某个条目(不太难),它必须删除保存删除按钮的文件所在的整个文件夹(也可以) ),但我也希望它删除另一个放在其他地方的文件夹,我不知道该怎么做。使用
dirname(__FILE__);
我能够获取保存删除按钮的文件所在的文件路径。结果如下:
mywebsite.nl/subdomains/dongen/httpdocs/s-gravenmoer/aandrijvingenenbesturingen/logo4life
我想要删除的文件路径非常类似,但有点不同。最后3个文件夹是一个变量,所以它们的长度(以字符为单位)总是不同的。但是,必须从此文件路径中删除倒数第二个文件夹,因此保留:
mywebsite.nl/subdomains/dongen/httpdocs/s-gravenmoer/logo4life
有没有办法用PHP做到这一点?使用substr或类似的东西?
谢谢!
答案 0 :(得分:2)
我认为这应该可以解决问题:
$folderToRemove = preg_replace( '#^(.*)/(.*?)/(.*?)$#', "$1/$3", dirname(__FILE__) );
答案 1 :(得分:1)
您可以尝试使用" glob。" www.php.net/glob
中的详细信息您可以尝试:
$files = glob('subdomains/dongen/httpdocs/*/logo4life');
foreach ($files as $file) {
unlink($file); // note that this is very dangerous though, you may end up deleting a lot of files
}
答案 2 :(得分:0)
你不需要任何花哨的东西,正如你猜测的那样,一个简单的str_replace会做到这一点: -
$file = 'mywebsite.nl/subdomains/dongen/httpdocs/s-gravenmoer/aandrijvingenenbesturingen/logo4life';
var_dump(str_replace('aandrijvingenenbesturingen/', '', $file));
输出: -
string 'mywebsite.nl/subdomains/dongen/httpdocs/s-gravenmoer/logo4life' (length=62)
答案 3 :(得分:0)
$path = "mywebsite.nl/subdomains/dongen/httpdocs/s-gravenmoer/aandrijvingenenbesturingen/logo4life";
$regex = "/(.*\/).*\/(.*)/";
$matches = array();
preg_match($regex, $path, $matches);
// var_dump($matches);
$new_path = $matches[1].$matches[2];
echo $new_path;
上面的代码使用preg_match
来匹配字符串中的正则表达式。