【问题标题】:Check if file exists that starts with given string检查是否存在以给定字符串开头的文件
【发布时间】:2012-02-15 12:13:10
【问题描述】:

给个名字

$path = 'articles/001.html';

我可以像这样检查这样的文件是否存在:

if ( file_exists( $path ) ) {
    // include it
} else {
    // redirect to articles index
}

但是,我正在考虑通过添加文章标题来修改文章的 URL。所以,如果用户请求这个 URL:

"http://foo.com/articles/001"

我想把 URL 改成这样:

"http://foo.com/articles/001/the-title-of-the-article-here"

现在,这当然意味着我必须将那篇文章(以及所有其他文章)的标题存储在某个地方。标题位于文章的<h1> 元素中,但我怀疑在服务器上读取文章(文件)只是为了检索标题是一个好主意。

所以,我正在考虑将标题放在文件名中,如下所示:

"001-the-title-of-the-article-here.html"

然后我可以从文件名中提取它并将其添加到 URL。但是,我不确定如何检查 articles 目录中是否存在这样的文件 - 我得到的只是文章 ID(在这种情况下为 001)。

因此,基于 ID,我想检查articles 目录中是否存在以该 ID 开头的 HTML 页面,如果是,我想检索其文件名。

这可以吗?这是一个好方法吗?欢迎提出建议。

【问题讨论】:

    标签: php apache file exists


    【解决方案1】:

    glob 可以根据模式为您匹配文件:

    $files = glob('articles/001-*.html');
    

    它会返回一个包含所有匹配文件的数组。

    【讨论】:

    • 如何将 ID 连接到字符串?我从$_GET['id'] 获取ID。这 - glob( 'articles/.$_GET['id'].-*.html' ) - 引发错误。
    • 你只是在混淆你的报价。 'articles/' . $_GET['id'] . '-*.html'.
    • 啊这个 - glob( 'articles/'.$_GET['id'].'-*.html' )。明白了。
    猜你喜欢
    • 2012-02-06
    • 2023-01-01
    • 2011-05-04
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    相关资源
    最近更新 更多