【问题标题】:check file exist with regular expression in php [duplicate]检查文件在php中是否存在正则表达式[重复]
【发布时间】:2014-07-13 08:25:11
【问题描述】:

我在服务器上上传了带有客户 ID 的图像。但我不想两次上传多种格式的文件(例如,客户 id=1 应该只有一张图片,即 1.jpg 或 1.png)

如何在更新图像时全局检查该文件是否已经存在?

我可以在没有文件扩展名的情况下检查文件是否存在?

我正在使用这个命令来检查文件。

file_exists('./media/customer-id/'.$cus_id);

【问题讨论】:

  • 检查我发布的链接中的duplicate answer。您需要使用glob()@GumboThis comment 准确回答了您的问题。确保您搜索该网站以避免发布重复的问题。

标签: php regex


【解决方案1】:

您可以为此使用glob() 并计算结果。

function patternExists($pattern) {
    return count(glob($pattern)) > 0;
}

并像这样使用

if (patternExists("./media/customer-id/".$cus_id."*")) {
    // bad!
}

【讨论】:

  • 请注意,glob() 在某种程度上是一个准正则表达式。 ? 匹配除 / 之外的任何字符的 1,* 匹配除 / 之外的任何字符的 0 或多个。不过,+1 是一个简单的解决方案。
  • @Sam thx,我已将其重命名为使用 PHP 的公式
  • @kingkero:如何在不知道扩展名的情况下在浏览器中查看该图像。
【解决方案2】:

使用scandir() 运行类似ls 的命令并接收目录内容数组。然后遍历文件,看看是否有任何与客户 ID 匹配的内容。

$exists = false;
foreach(scandir('./media/customer-id') as $file) {
    if(preg_match('/^' . $customer_id . '\.$/', $file)) {
        $exists = true;
        break;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    相关资源
    最近更新 更多