你可以扫描目录中的某个值之间的文件名,例如20.jpg-40.jpg吗? PHP

时间:2018-05-14 14:24:34

标签: php

正如标题所说,有没有更简单的方法来使用 scandir 返回值20.jpg-40.jpg而不必返回所有整个目录?

3 个答案:

答案 0 :(得分:1)

简短回答:不,没有通用的方法来返回一系列文件名。

答案很长:在您的情况下,您可以使用glob()' pattern matching

foreach (glob("[23][0-9].jpg") as $filename) {
    echo "$filename" . "\n";
}

会将20.jpg返回39.jpg。要获得40.jpg,你似乎也不走运。

glob模式匹配是某种正则表达式,但肯定不如使用preg_match()或编写自己的算法那么强大。

答案 1 :(得分:0)

我以前没有时间回答,但我认为这是一个更好的解决方案,因为它可以自定义。
我使用scandir,因为代码必须查看每个文件 使用glob,您可以创建一个简单的模式,可能会让您希望有更好的选择 使用scandir我抓住它们并使用例如array_filter自己过滤它们。

public class LoadRepository :Repository<Load, LoadModel>,ILoadRepository
 {
    IUSCanadaCityStateRepository _USCanadaCityStateRepository;
    public LoadRepository(DbContext dbContext, IUSCanadaCityStateRepository  USCanadaCityStateRepository) : base(dbContext)
    {
        _USCanadaCityStateRepository = USCanadaCityStateRepository;
    }        
    public int GetPickUpLocations(int loadId)
    {
        var count = _dbSet.FromSql("SELECT COUNT(LocationID) as locationCount FROM vPickupLoc WHERE vPickupLoc.LoadID = @p0", loadId).ToArray();
        return count[0].LoadLocations.Count;
    }


    public LoadCarrierInfo UpdateCarrierInfo(LoadCarrierInfo loadCarrierInfo)
    {

        return _dbSet.FromSql("UpdatePickCarrier @CarrierID,@LoadID, @Primary,@AssistingPortalID,@AssistingEmployeeID",
                    new SqlParameter("LoadID", SqlDbType.Int) { Value = loadCarrierInfo.LoadId },
                    new SqlParameter("Dispatcher", SqlDbType.VarChar) { Value = loadCarrierInfo.Dispatcher },
                    new SqlParameter("EmployeeID", SqlDbType.Int) { Value = 1 }, // logged in Employee instead
                    new SqlParameter("AssistingPortalID", SqlDbType.Int) { Value = loadCarrierInfo.AssistingPortalId },
                    new SqlParameter("AssistingEmployeeID", SqlDbType.VarChar) { Value = loadCarrierInfo.AssistingEmployeeId })
                    .Select(x=>new LoadCarrierInfo { }).FirstOrDefault();
    }

}

这是未经测试的代码,因为我从手机输入并且没有任何东西需要测试,但理论上它应该有用。

答案 2 :(得分:-1)

比特命中或错过,取决于您的问题,但documentation会浮现在脑海中。

foreach (glob("*20.jpg") as $filename) {
    echo "$filename" . "\n";
}

您可以使用正则表达式作为glob的参数。