在PHP中,使用正则表达式模式作为文件名查找现有文件

罗伯特·布拉德福德

我知道glob函数但是,我需要匹配一个正则表达式模式。说我有以下文件目录:

/assets
  |- logo-abd6d458.png
  |- logo-big-bd7543cd.png
  |- another-ab87dbf0.css
  +- something-784b52ac.png

我需要一个PHP函数,当我仅知道文件名扩展开头时,该函数应返回此目录中现有文件的文件名例如:

function asset_name($start, $extension) {
  // Some magic here
}

asset_name('logo', 'png');应该返回"logo-abd6d458.png",但是不应该返回"logo-big-bd7543cd.png"

asset_name('logo-big', 'png');应该回来"logo-big-bd7543cd.png"

任何人都可以找出此功能的“魔力”吗?我似乎无法绕过它。谢谢。

更新:资产目录是另一个目录的副本,但是每个文件都被重命名为包含连字符,然后在文件名的末尾包含八个字符的唯一哈希(用于缓存清除)。因此,原始文件logo.png将重命名为logo-abd6d458.png另一个文件,例如logo-big.something.else.here.png将变成logo-big.something.else.here-dcba4321.png,然后我将使用asset_name('logo-big.something.else.here', 'png');

调用函数时,我将始终使用$ start的整个原始文件名和$ extension的扩展名。

阿尔弗德

这是根据您的示例进行操作的一种方法。

我假设您的校验和是固定长度的,因此您只需删除文件名的最后10个字符并进行比较即可。

<?php

function asset_name($start, $ext)
{
    $dir = 'assets';
    $files = glob($dir.'/*.'.$ext);

    $suffixLength = -9 - strlen($ext) - 1;
    foreach ($files as $file) {
        $name = substr($file, strlen($dir)+1, $suffixLength);
        if ($name === $start) {
            return $file;
        }
    }

    throw new Exception('file not found');
}

$file = asset_name('logo', 'png');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在PHP中,使用正则表达式模式作为文件名查找现有文件

来自分类Dev

使用python中的模式或正则表达式匹配检查文件名

来自分类Dev

查找文件名正则表达式

来自分类Dev

正则表达式模式以匹配日志文件中的APK文件名

来自分类Dev

使用正则表达式查找文件名中不带下划线的文件

来自分类Dev

正则表达式模式为有效文件名

来自分类Dev

使用正则表达式匹配文件名

来自分类Dev

正则表达式以查找URL是否具有文件名的结尾

来自分类Dev

查找+正则表达式+带有模式的文件

来自分类Dev

正则表达式确定文件名中的 YYYYMMDD 模式

来自分类Dev

使用cp替换正则表达式模式和文件名的find -name

来自分类Dev

使用cp替换正则表达式模式和文件名的find -name

来自分类Dev

正则表达式从树输出中查找重复的文件名

来自分类Dev

使用正则表达式在文件名中的2个连字符之间查找数据

来自分类Dev

在MATLAB中通过正则表达式从文件名中查找和删除文件扩展名

来自分类Dev

有没有办法使用正则表达式来自动填充bash中的文件名?

来自分类Dev

使用Ruby正则表达式匹配文件名的最有效方法

来自分类Dev

使用正则表达式搜索带有时间戳的文件名

来自分类Dev

如何使用正则表达式从bash中的文件名中仅选择数字

来自分类Dev

使用正则表达式隔离文件名中的信息

来自分类Dev

使用正则表达式从字符串中刮取文件名

来自分类Dev

使用正则表达式匹配URL中的特定文件名

来自分类Dev

使用连续拆分或正则表达式从文件名中获取元素

来自分类Dev

崇高文本正则表达式以查找具有特定扩展名的文件名

来自分类Dev

Perl:使用正则表达式查找文件中的模式

来自分类Dev

使用正则表达式查找带有参数给出的扩展名的文件

来自分类Dev

正则表达式匹配文件名

来自分类Dev

正则表达式验证文件名失败

来自分类Dev

文件名的正则表达式

Related 相关文章

  1. 1

    在PHP中,使用正则表达式模式作为文件名查找现有文件

  2. 2

    使用python中的模式或正则表达式匹配检查文件名

  3. 3

    查找文件名正则表达式

  4. 4

    正则表达式模式以匹配日志文件中的APK文件名

  5. 5

    使用正则表达式查找文件名中不带下划线的文件

  6. 6

    正则表达式模式为有效文件名

  7. 7

    使用正则表达式匹配文件名

  8. 8

    正则表达式以查找URL是否具有文件名的结尾

  9. 9

    查找+正则表达式+带有模式的文件

  10. 10

    正则表达式确定文件名中的 YYYYMMDD 模式

  11. 11

    使用cp替换正则表达式模式和文件名的find -name

  12. 12

    使用cp替换正则表达式模式和文件名的find -name

  13. 13

    正则表达式从树输出中查找重复的文件名

  14. 14

    使用正则表达式在文件名中的2个连字符之间查找数据

  15. 15

    在MATLAB中通过正则表达式从文件名中查找和删除文件扩展名

  16. 16

    有没有办法使用正则表达式来自动填充bash中的文件名?

  17. 17

    使用Ruby正则表达式匹配文件名的最有效方法

  18. 18

    使用正则表达式搜索带有时间戳的文件名

  19. 19

    如何使用正则表达式从bash中的文件名中仅选择数字

  20. 20

    使用正则表达式隔离文件名中的信息

  21. 21

    使用正则表达式从字符串中刮取文件名

  22. 22

    使用正则表达式匹配URL中的特定文件名

  23. 23

    使用连续拆分或正则表达式从文件名中获取元素

  24. 24

    崇高文本正则表达式以查找具有特定扩展名的文件名

  25. 25

    Perl:使用正则表达式查找文件中的模式

  26. 26

    使用正则表达式查找带有参数给出的扩展名的文件

  27. 27

    正则表达式匹配文件名

  28. 28

    正则表达式验证文件名失败

  29. 29

    文件名的正则表达式

热门标签

归档