You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

下载脚本技术问询:如何全局屏蔽所有PHP文件而非逐个指定

屏蔽所有PHP文件的实现方法

你之前用$file_name != '*.php'无效的原因是:普通字符串比较不支持通配符*,这种写法只会精确匹配字面量为*.php的文件名,自然无法过滤所有PHP文件。以下是几种实用的实现方式:

方法1:检查文件后缀(最直观)

利用字符串处理函数判断文件名是否以.php结尾,同时兼容大小写后缀(比如.PHP):

// 方式A:用pathinfo获取扩展名
$file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
if (strtolower($file_ext) === 'php') {
    // 跳过该文件,不执行下载逻辑
    continue;
}

// 方式B:直接截取文件名结尾部分判断
if (strtolower(substr($file_name, -4)) === '.php') {
    continue;
}

方法2:正则表达式匹配(灵活扩展)

如果需要支持更多变种后缀(比如.php5、.phps),正则表达式会更灵活:

// 匹配以.php/.PHP/.php5/.phps结尾的文件
if (preg_match('/\.php[5s]?$/i', $file_name)) {
    continue;
}

其中i表示不区分大小写,[5s]?表示可选的5或s后缀。

方法3:遍历目录时直接过滤

如果你的脚本是遍历目录获取文件列表,可以在遍历阶段就排除PHP文件:

$target_dir = '/你的目标目录路径';
$file_list = scandir($target_dir);

foreach ($file_list as $file) {
    // 跳过目录和PHP文件
    if (is_dir($target_dir . '/' . $file) || preg_match('/\.php$/i', $file)) {
        continue;
    }
    // 执行你的下载逻辑
}

注意事项

  • 如果$file_name包含完整文件路径(比如/var/www/site/index.php),上述方法依然有效,因为pathinfo和正则会自动识别文件名部分。
  • 若需要屏蔽其他脚本文件,只需扩展后缀判断或正则规则即可。

内容的提问来源于stack exchange,提问作者Fontane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 07:45:16