【问题标题】:Fopen a .txt file using a regex使用正则表达式打开一个 .txt 文件
【发布时间】:2013-09-03 15:56:19
【问题描述】:

我需要打开一个我知道目录路径但不知道全名的 .txt 文件。我只知道一些独特的数字,它们是其名称的一部分。

我已经检查了 PHP.net 和 google,但没有发现任何有用的东西。

在您看来,是否可以采取一些措施来实现这一目标?

例如:我有这些作为文件名一部分的唯一编号(“9129129”),并且我知道存储此文件和其他文件的目录的路径(“/Home/Library/ApplicationSupport/project”) .该文件本身是一个 .txt,可以是“xyz124124 fbqwf9129129 fwehbj$124.txt”之类的内容。

【问题讨论】:

  • 一切皆有可能,请分享格式,示例或代码。

标签: php regex filenames fopen


【解决方案1】:

您可以使用glob 函数来匹配带有一些子字符串的 .txt 文件:

$substring = "9129129";
$path      = '/Home/Library/ApplicationSupport/project/';

list($name) = glob(sprintf("$path*%d*.txt", $substring), GLOB_NOSORT) + array(NULL);
if ($name) {
    $file = fopen($path . $name, "r");
    // Do something with `$file`        
}

【讨论】:

  • 感谢您的精彩回答!但是我必须使用 PHP 5.3.5。并且代码无法正常工作。我该如何解决?
【解决方案2】:

这里不需要正则表达式,只需要普通的glob() 函数,您可以在其中提供搜索模式:

$files = glob('/Home/Library/ApplicationSupport/project/*9129129*.txt');
print_r( $files ); # or foreach $files array and do your magic

【讨论】:

  • 在我的情况下工作得很好。谢谢。
【解决方案3】:
^[a-zA-Z0-9-_\.]+\.(txt)$ should work

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-24
    • 2018-03-10
    • 1970-01-01
    • 2013-04-12
    • 2014-11-24
    • 2023-01-31
    • 1970-01-01
    • 2022-10-07
    相关资源
    最近更新 更多